mysql foreach fwrite

时间:2011-06-10 22:05:55

标签: 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,"w");
  } 
  $fp = fopen($countfile, 'r');
  fwrite($fp, $jsondata);
  fclose($fp);
}

4 个答案:

答案 0 :(得分:5)

有几件事。

  • 您不需要(并且应该避免)在每次迭代中打开文件
  • 您以只读方式打开文件(r

这样的事情应该这样做

$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));

这感觉更像你可能正在寻找的东西。

答案 1 :(得分:2)

因为您将文件重新打开为只读

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

$fp = fopen($countfile, 'w'); // to write

$fp = fopen($countfile, 'a'); // to append

您也可以在开始时打开文件进行写入,将行追加到变量中,然后将它们一起写入文件。

$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);

答案 2 :(得分:0)

您正在打开文件以供阅读

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

你也不需要

  if(!file_exists($countfile))
  {
    fopen($countfile,"w");
  } 

只需使用:

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

答案 3 :(得分:0)

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