Php mysql foreach fwrite
我在这里使用一些代码,将mysql查询数据转换为json数据并写入文件。问题在哪里?为什么文件是零kbPhp 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,
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中插入最新的一个。它将删除早期的数据。