我有一段时间遇到这个问题,我在这里发布了这个问题,但我没有任何反馈意见。我正在尝试导出一个查询,我这样做,只是字段,它们是重复的。怎么会这样?
以下是代码:
$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);
答案 0 :(得分: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);
答案 1 :(得分:0)
您将两种不同的方法混为一谈。
以下方法可行。它使用implode合并您的行。
$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,您将只有一组值。
答案 2 :(得分: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");
}