php - 使用 mysql 和 php 创建多个 csv 文件

标签 php mysql csv while-loop

我正在尝试使用 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 文件中,我发现之前生成的所有循环。有没有办法只看到循环生成的最后一个循环?

最佳答案

你有 2 个 while 循环。您仅在主循环中更改文件名,因此在子循环中,您始终在相同的 csv 中写入(并顺便大量打开/关闭此文件!)

所以你应该尝试这样的事情:

$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 1=1;";

$result = mysql_query($query);  
//second while to write document and values inside of it 
while ($riga = mysql_fetch_array($result)){
    $testo = "";
    $testo .= "stuff to write\n";
    ...
    ...
    information inside the csv
    ...
    ...

    // once you know what to write, open file.
    //useful variable to write files
    $path ="TMPIN/";
    $doc=$path."DOC_".$riga['id_order'].".csv";
    $myfile = fopen($doc, "w");
    fwrite($myfile, $testo."\n");
    fclose($myfile);
}

编辑:(感谢@Kickstart)

删除了第一个无用的循环...您只能执行 1 个查询

关于php - 使用 mysql 和 php 创建多个 csv 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31432944/

相关文章:

php - 将 mySQL_pconnect 转换为 mySQLi_connect 时出现问题

php - 从数据库中获取具有相同列条目的数据?

python - 如何将 MySQL timestamp(6) 读入 pandas?

python 杀死 : 9 when running a code using dictionaries created from 2 csv files

c# - 将 WHERE 子句与 csv 文件一起使用 ADO.NET/C#

javascript - 无法从 angularjs 正确获取 $_SESSION 变量

php - 使用 HTACCESS 将斜杠后的文本转换为变量

mysql - 指定的 CGI 应用程序行为不当,未返回完整的 HTTP header 集

mysql - MySQL 中的字符集配置层如何组合在一起?

android - 将 .csv 文件导入 Android 中的 Sqlite