Php mysql foreach fwrite

Php mysql foreach fwrite,php,foreach,fwrite,Php,Foreach,Fwrite,我在这里使用一些代码,将mysql查询数据转换为json数据并写入文件。问题在哪里?为什么文件是零kb while($row = mysql_fetch_array($Query)){ $arr = array ('name'=>$row['name']); $jsondata = json_encode($arr); $countfile="data.txt"; if(!file_exists($countfile)) { fopen($countfile,

我在这里使用一些代码,将mysql查询数据转换为json数据并写入文件。问题在哪里?为什么文件是零kb

while($row = mysql_fetch_array($Query)){ 
  $arr = array ('name'=>$row['name']);
  $jsondata = json_encode($arr);
  $countfile="data.txt";
  if(!file_exists($countfile))
  {
    fopen($countfile,"w");
  } 
  $fp = fopen($countfile, 'r');
  fwrite($fp, $jsondata);
  fclose($fp);
}

您正在以只读方式打开文件

$fp = fopen($countfile, 'r');
你也不需要

  if(!file_exists($countfile))
  {
    fopen($countfile,"w");
  } 
只需使用:

$fp = fopen($countfile, 'w');

因为您正在以只读方式重新打开文件

$fp=fopen$countfile,'r'

试一试

$fp=fopen$countfile,“w”;//写

$fp=fopen$countfile,“a”;//附加

您还可以在开始时打开文件进行写入,将行附加到变量中,然后将所有行一起写入文件

$countfile="data.txt";
$fp = fopen($countfile, 'w');
while($row = mysql_fetch_array($Query))
{ 
    $arr = array ('name'=>$row['name']);
    $jsondata .= json_encode($arr) . "\n";

}
fwrite($fp, $jsondata);
fclose($fp);
有几件事

您不需要而且应该避免在每次迭代中打开该文件 您以只读方式打开该文件 至少像这样的事情应该可以做到

$countfile="data.txt";
$fp = fopen($countfile, 'w');
while($row = mysql_fetch_array($Query))
{ 
    $arr = array ('name'=>$row['name']);
    $jsondata = json_encode($arr);

    fwrite($fp, $jsondata);
}
fclose($fp);
另外,您可以在文件中附加单独的json结构,可能不是,也可能是您想要的。您应该首先将所有要存储的内容收集到一个json结构中,然后保存它

$data = array();
while($row = mysql_fetch_array($Query))
{ 
    $data[] = array ('name'=>$row['name']);

}
file_put_contents('data.txt', json_encode($data));

这更像是您可能正在查找的内容。

您正在以只读方式打开文件。您可能需要“w”或“r+”。

我是较新的,但使用$fp=fopen$countfile,“a”;在任何情况下都能很好地工作。$fp=fopen$countfile,“w”;在我的测试中,只需在foreach中插入最新的一个。它将删除早期的数据。