0

我正在编写一个脚本来将 MySQL 查询导出为 CSV 文件。到目前为止一切顺利,除了我得到第二个foreach()语句的无效参数!我尝试使用mysql_data_seek,但这并没有解决问题。AFAK$row是一个数组,所以它应该可以工作。

<?php

$conn = mysql_connect("12**strong text**7.0.0.1", "root", "root") or die(mysql_error());
mysql_select_db("database", $conn); 

if(isset($_POST['submit']))
{
    $filename = 'uploads/'.strtotime("now").'.csv';

    $fp = fopen($filename,"w");

    $sql = mysql_query("SELECT * FROM master") or die(mysql_error());
    $row = mysql_fetch_assoc($sql);

    $seperator = "";
    $comma = "";

    foreach($row as $name => $value)
    {
        $seperator .= $comma . '' .str_replace('','""',$name);
        $comma = ",";
    }

    $seperator .= "\n";

    fputs($fp,$seperator);


    mysql_data_seek($sql, 0);

    while( $row = mysql_fetch_assoc($sql) );
    {
        $seperator = "";
        $comma = "";
        foreach($row as $name => $value)
        {
            $seperator .= $comma . '' .str_replace('','""',$value);
            $comma = ",";
        }
        $seperator .= "\n";
        fputs($fp,$seperator);
    }
    fclose($fp);
}


?>
4

1 回答 1

0

我不明白为什么你添加了第一个 foreach 循环,你的代码应该如下

<?php

$conn = mysql_connect("12**strong text**7.0.0.1", "root", "root") or die(mysql_error());
mysql_select_db("database", $conn); 

if(isset($_POST['submit']))
{
    $filename = 'uploads/'.strtotime("now").'.csv';

    $fp = fopen($filename,"w");

    $sql = mysql_query("SELECT * FROM master") or die(mysql_error());
    while( $row = mysql_fetch_assoc($sql) );
    {
        $seperator = "";
        $comma = "";
        foreach($row as $name => $value)
        {
            $seperator .= $comma . '' .str_replace('','""',$value);
            $comma = ",";
        }
        $seperator .= "\n";
        fputs($fp,$seperator);
    }
    fclose($fp);
}


?>
于 2012-05-30T11:50:30.350 回答