0

我有这个问题有一段时间了,我在这里发布了这个问题,但我没有任何反馈。我正在尝试导出查询,我这样做了,只是字段重复了。怎么会这样?

这是代码:

$fh = fopen('hostess_query4.csv', 'w');
$result1 = mysql_query("SELECT ".$username." FROM hostess");
if ( !$result1 ) { echo mysql_error(); }
while ($row = mysql_fetch_array($result1)) {
    $last = end($row);
    foreach ($row as $item) {
        fputcsv($fh, $row, ',');
        if ($item != $last)
            fwrite($fh, "\t");
        }
    fwrite($fh, "\n");
    }
}

fclose($fh);
4

3 回答 3

0

使用 mysql_fetch_assoc() 而不是 mysql_fetch_array。
文档: http:
//php.net/mysql_fetch_array
http://php.net/mysql_fetch_assoc

或者使用 mysql_fetch_array 并将第二个可选参数设置为 MYSQL_ASSOC。

新代码:

$fh = fopen('hostess_query4.csv', 'w');
$result1 = mysql_query("SELECT ".$username." FROM hostess");
if ( !$result1 ) { echo mysql_error(); }
while ($row = mysql_fetch_assoc($result1)) {
    $last = end($row);
    foreach ($row as $item) {
        fputcsv($fh, $row, ',');
        if ($item != $last)
            fwrite($fh, "\t");
        }
    fwrite($fh, "\n");
    }
}

fclose($fh);
于 2012-06-23T01:05:08.567 回答
0

你可以试试这个。

$last = end(mysql_fetch_array($result1)); // this will return the last element in $result1
while (list($username) = mysql_fetch_array($result1)) {        
    fputcsv($fh, $username, ',');
    if ($username!= $last)
        fwrite($fh, "\t");
    }
    fwrite($fh, "\n");
}
于 2012-06-23T01:31:13.893 回答
0

您将两种不同的方法混淆在一起。

以下方法可行。它使用内来合并你的行。

$fh = fopen('hostess_query4.csv', 'w');

$result1 = mysql_query("SELECT ".$username." FROM hostess");

if ( !$result1 ) { echo mysql_error(); }

while ($row = mysql_fetch_assoc($result1)) {
    fwrite($fh, implode(",", $row)."\n");
}

fclose($fh);

您的问题的原因是 mysql_fetch_array 将返回 0 递增和关联数组。例子:

Array
(
    [0] => 1
    [ID] => 1
    [1] => Mike
    [NAME] => Mike
    [2] => 22
    [Age] => 22
) 

因此,当您导出它时,它正在导出重复项。将其更改为 mysql_fetch_assoc 或 mysql_fetch_object,您将只有一组值。

于 2012-06-23T01:18:52.663 回答