首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >fputcsv和fwrite不工作

fputcsv和fwrite不工作
EN

Stack Overflow用户
提问于 2013-07-03 20:12:02
回答 1查看 601关注 0票数 2

我已经按照here给出的说明将查询结果写入文件。但在这种情况下,我必须首先打开并写入文件头。然后继续为多个查询逐个编写/附加查询结果。这个附加部分是我作为一个函数编写的。问题是我的脚本只写了头文件(来自第一部分),当它被调用时,它不遵循函数中存在的fputcsv命令。你能帮我解决这个问题吗?

下面是我第一次打开该文件的代码:

代码语言:javascript
复制
<?php
$fp = fopen('php://output', 'w');
$headers = array("Index","Gene_symbol","Gene_Name","Human_entrez","Rat_entrez","Mouse_entrez","DbTF","PMID");
header('Content-Type: text/csv');
header('Content-Disposition: attachment; filename="export.txt"');
fputcsv($fp, $headers,chr(9));
header('Pragma: no-cache');
header('Expires: 0');
?>

然后查询部分有点像这样(我有多个这样的查询部分,每个部分都调用相同的函数):

代码语言:javascript
复制
<?php
if (is_numeric($sterm))
    {
        $query="select * from tf where entrez_id_human=$sterm || entrez_id_rat=$sterm || entrez_id_mouse=$sterm";
        $result=mysql_query($query) or die(mysql_error());
        if (mysql_num_rows($result)==0)
          {echo "<tr><td align='center' colspan=6> $sterm not found!  </td> </tr>";}
         elseif (mysql_num_rows($result)>0)
         {result_disp($result);}
    }
?>

然后通过函数将结果写入文件如下:

代码语言:javascript
复制
<?php
function result_disp($results)
{
if($fp && $results)
{
 while ($rows = mysql_fetch_row($results))
    {
        fputcsv($fp, array_values($rows),chr(9));
    } die;
 }
}

最后在脚本末尾关闭文件

代码语言:javascript
复制
fclose($fp);
?>

谢谢

EN

回答 1

Stack Overflow用户

发布于 2013-10-08 05:50:58

你的第一个问题是你的文件句柄在函数中没有作用域。在我看来,最好的方法是将它传递给函数:

代码语言:javascript
复制
....
     elseif (mysql_num_rows($result)>0)
     {result_disp($result, $fp);}
....

function result_disp($results, $fp)
{
if($fp && $results)
{
 while ($rows = mysql_fetch_row($results))
    {
        fputcsv($fp, array_values($rows),chr(9));
    } //DO NOT PUT "die()" HERE
 }
}

第二个问题是函数内部的"die()“语句。"die()“的目的是完全停止脚本。这是PHP自杀。因此,如果您保留它,您的脚本将在第一次result_disp调用结束时停止。这意味着您不仅永远不会到达fclose($fp),而且也永远不会到达对result_disp的任何其他调用。

您的第三个问题是您正在使用mysql_*函数。由于几个原因,它们被弃用(不再使用)。我有由它引起的数据库连接冻结的个人经验。您应该切换到mysqliPDO

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17447632

复制
相关文章

相似问题

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