【发布时间】:2015-07-15 14:15:51
【问题描述】:
我正在尝试使用 mysql 和 php while 生成多个渐进式 csv 文件(名称为 DOC_n°.csv)。
//query 1
$query2 ="SELECT id_order FROM ps_orders";
$result2= mysql_query($query2);
$i=1;
while ($riga2 = mysql_fetch_array($result2)){
//query 2
$query = "SELECT ps_order_detail.product_name,ps_orders.id_order,ps_orders.date_add,ps_order_detail.unit_price_tax_incl,ps_order_detail.id_order_detail,ps_order_detail.product_quantity,ps_order_detail.product_reference,ps_order_detail.product_weight,ps_order_detail.unit_price_tax_incl,ps_address.id_customer,ps_address.firstname,ps_address.lastname,ps_address.address1,ps_address.address2,ps_address.postcode,ps_address.city
FROM ps_orders
JOIN ps_order_detail ON ps_orders.id_order = ps_order_detail.id_order
JOIN ps_address ON ps_orders.id_customer = ps_address.id_customer
WHERE ps_orders.id_order=$i;";
$result = mysql_query($query);
//second while to write document and values inside of it
while ($riga = mysql_fetch_array($result)){
//useful variable to write files
$path ="TMPIN/";
$doc=$path."DOC_".$i.".csv";
$myfile = fopen($doc, "w");
...
...
information inside the csv
...
..
fwrite($myfile, $testo."\n");
fclose($myfile);
};
$i++;
};
我的代码有效,但在生成的 csv 文件中,我发现之前生成的所有循环。有没有办法只查看生成的 LAST 循环?
【问题讨论】:
-
如果可以的话,你应该stop using
mysql_*functions。它们不再被维护并且是officially deprecated。改为了解 prepared statements,并考虑使用 PDO,it's really not hard。 -
问题可能出在缺少的代码中。
$testo未在给定代码中定义,可能需要在新循环开始时重置。 -
这里有很多很好的答案。小点是您的代码似乎选择了所有 id_order 字段,然后获取 id_order = $i 的所有记录。这仅在 id_order 从 1 开始并且没有间隙时才有效。
标签: php mysql csv while-loop