Intereting Posts

Как написать значения массива в файл csv в PHP?

У меня есть массив, структура которого подобна $data = array{0=>'abc',1=>xyz,2=>tqs}

Теперь мне нужно записать эти значения в файл csv. Мне нужно отобразить каждое значение в 1-м столбце и с каждой новой строкой на новой вставке вместе с предыдущим значением, уже имеющимся.

Ниже приведен код, который я использую, но каждый раз, когда я его выполняю, я получаю последнее значение в файле:

 for ($c=0; $c < $num; $c++) { echo $data[$c]; echo $query = "select prod_sku,prod_name from tbl_product where prod_sku = '".$data[$c]."'"; $result = mysql_query($query); $row = mysql_fetch_array($result); if(empty($row)){ print_r($row); echo 'test'; $fp = fopen("file.csv", "w"); print_r($data[0]); fputcsv($fp, $data[0]); fclose($fp); } 

Как я могу достичь этого с помощью PHP?

Related of "Как написать значения массива в файл csv в PHP?"

Проблема в том, что вы делаете fopen внутри цикла for, поэтому каждый раз, когда цикл работает, ваш файл переписывается. Переместите fopen и fclose за пределы цикла, и он будет работать. Как это;

 $fp = fopen("file.csv", "w"); for ($c=0; $c < $num; $c++) { $query = "select prod_sku,prod_name from tbl_product where prod_sku = '".$data[$c]."'"; $result = mysql_query($query); $row = mysql_fetch_array($result); fputcsv($fp, $data); } fclose($fp); 

Если вы используете MySQL, вы можете использовать SELECT ... INTO OUTFILE :

 SELECT prod_sku, prod_name INTO OUTFILE '/tmp/products.csv' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' ESCAPED BY '\\' LINES TERMINATED BY '\n' FROM tbl_product WHERE 1 

http://dev.mysql.com/doc/refman/5.0/en/select.html