我在这里使用一些代码,将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);
}
答案 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+'
。