首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mysql foreach fwrite

mysql foreach fwrite
EN

Stack Overflow用户
提问于 2011-06-11 06:05:55
回答 4查看 2K关注 0票数 0

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

代码语言:javascript
复制
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);
}
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-06-11 06:08:55

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

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

试一试

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

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

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

代码语言:javascript
复制
$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
EN

Stack Overflow用户

发布于 2011-06-11 06:09:18

有几件事。

你不需要(也应该避免)在每次迭代中打开文件只读(r)你打开文件

像这样的东西应该就行了

代码语言:javascript
复制
$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结构中,然后保存它。

代码语言:javascript
复制
$data = array();
while($row = mysql_fetch_array($Query))
{ 
    $data[] = array ('name'=>$row['name']);

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

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

票数 5
EN

Stack Overflow用户

发布于 2011-06-11 06:08:15

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

代码语言:javascript
复制
$fp = fopen($countfile, 'r');

你也不需要

代码语言:javascript
复制
  if(!file_exists($countfile))
  {
    fopen($countfile,"w");
  } 

只需使用:

代码语言:javascript
复制
$fp = fopen($countfile, 'w');
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6312535

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档