我正在尝试在CSV文件中转换SQL查询结果,但我找不到可行的解决方案。你有什么建议吗?
提前Tnx!这是我的代码:
<? mysql_query("SET CHARACTER SET 'utf8'");
$result3 = mysql_query("SELECT * FROM richieste GROUP BY mail");
while( $row2 = mysql_fetch_array( $result3 ) )
{
$id="{$row2['id']}";
$nominativo="{$row2['nominativo']}";
$mail="{$row2['mail']}";
$telefono="{$row2['telefono']}";
$comune="{$row2['comune']}";
$cap="{$row2['cap']}";
$provincia="{$row2['provincia']}";
$regione="{$row2['regione']}";
echo"
<tr><td width='20%' align='left' class='testo_verde_maiuscolo'><a href='visualizza_richieste.php?mail=$mail&id=$id'>$nominativo</a></td><td width='15%' align='left' class='testo_verde'><a href='mailto:$mail'>$mail</a></td>
<td width='10%' align='left' class='testo_verde'>$telefono</td><td width='15%' align='left' class='testo_verde'>";
在另一个表中查找值
$result_comune = mysql_query("SELECT * FROM comuni WHERE cod_istat=$comune");
while( $row_comune = mysql_fetch_array( $result_comune ) )
{ $comune_traslata="{$row_comune['comune']}";echo"$comune_traslata";
}
echo"</td><td width='10%' align='left' class='testo_verde'>
$cap</td><td width='10%' align='left' class='testo_verde'>
";
这里我正在寻找另一个表中的值
$result_provincia = mysql_query("SELECT * FROM province WHERE cod_provincia=$provincia");
while( $row_provincia = mysql_fetch_array( $result_provincia ) )
{
$provincia_traslata="{$row_provincia['provincia']}";
echo"$provincia_traslata";
}
echo"</td>
<td align='left' class='testo_verde'>";
与之前相同,在另一个表中查找值
$result_regione = mysql_query("SELECT * FROM regioni WHERE cod_regione=$regione");
while( $row_regione = mysql_fetch_array( $result_regione ) )
{
$regione_traslata="{$row_regione['regione']}";
echo"$regione_traslata";
}
echo"</td>
";
echo"</tr>";
首次编辑:尝试使用此代码:
$_csv_data="id;nominativo;mail;telefono\n";
@fwrite( $_fp, $_csv_data);
while (list( $id, $nominativo, $mail, $telefono) = mysql_fetch_row($result3))
{
$_csv_data = $id.';'.$nominativo.';'.$mail.';'.$telefono."\n";
@fwrite( $_fp, $_csv_data);
}
@fclose( $_fp );
但我只是获得了csv的第一行。
} ?>
答案 0 :(得分:0)
HTML生成mysql_fetch_array
循环中的重复while
调用将消耗所有行,并在完成时将内部结果指针留在末尾。因此,当您在同一结果上尝试另一个mysql_fetch_array
时,已经在结果的末尾,您将不会收到任何(更多)行。
尝试添加...
mysql_data_seek($result3, 0);
...在第二个/ CSV生成循环之前,将内部指针移动到查询结果的开头。
作为旁注,请在mysql_*
Views Global Filter
函数使用情况下the manual查看此内容:
答案 1 :(得分:0)
为什么要注意尝试直接从MySQL将数据写入csv文件(您可以使用到outfile )。 以下是一个例子:
SELECT * FROM province WHERE cod_provincia=$provincia into outfile '/tmp/abc.csv' fields terminated by ',' enclosed by '"' lines terminated by '\n';
根据查询中的where子句,数据将以csv文件写入。