使用php将数据导出到现有的csv文件中

时间:2015-05-18 10:50:03

标签: php sql csv

我正在尝试从我的数据库中获取数据并将其加载到现有的csv文件中我没有错误但每次检查文件时它仍然是空的。 这是我的PHP文件:

 <?
 $server="XXXX";
 $user="XXXX";
 $password="XXXX";
 $db="XXXX";

  mysql_connect($server,$user,$password) or die('erreur au serveur');
  mysql_select_db($db) or die('erreur db');
  if ($file=fopen('XXXX/toERP/exportfactures.csv','w')!=FALSE){
  $req='select * from facture';
  $sql = mysql_query($req);
  $cpt=1;
   $response["factures"] = array();
   $output=fopen('http://XXXXX/toERP/exportfactures.csv','w');
  if (mysql_num_rows($sql) > 0) {
  // looping through all results
   // factures node
   while ($row = mysql_fetch_array($sql)) {
    // temp user array
    $facture = array();
    $facture["id_fac"] = $row["id_fac"];
    $facture["id_client"] = $row["id_client"];
    $facture["id_agent"] = $row["id_agent"];
    $facture["montant"] = $row["montant"];
    $facture["type_paiement"] = $row["type_paiement"];
    $facture["id_prod"] = $row["id_prod"];
    $facture["date_vente"] = $row["date_vente"];
    // push single client into final response array
    array_push($response["factures"], $facture);
 }
 foreach ($response["factures"] as $ligne){
    var_dump($ligne);
    fputcsv($output,$ligne) or die ('erreur');
    echo $cpt."inserted";
    $cpt++;
 }
  fclose($file);
 } else {
 echo "file not found";
}
}
?>

4 个答案:

答案 0 :(得分:0)

您无法写入http位置尝试将其更改为本地目录。

fopen('\XXXX\toERP\factures.csv','w')

或只是更改保存位置

$output = fopen('\XXXX\toERP\factures.csv','w'); fputcsv($output, explode(';',$ligne));

答案 1 :(得分:0)

以下是fputcsv的定义:http://php.net/manual/en/function.fputcsv.php

作为第二个参数,您需要提供一个包含字段的数组。

在您的情况下,$ ligne是一个包含一个元素的数组:[&#39; factures&#39;]这是另一个数组,因此您需要更改foreach以匹配下面的表单:

foreach ($response['factures'] as $ligne)

此外,正如其他人提到的:您需要为文件名选择本地资源,并确保您有权在其上书写。

答案 2 :(得分:0)

您正在尝试从远程服务器打开文件,因为您已编写了url示例。如果您看到echo插入的行,则这是您最可能出现的问题。

答案 3 :(得分:0)

这段代码对我有用:

<?
$server="mysql12.000webhost.com";
$user="a2258793_star";
$password="star123";
$db="a2258793_stores";
$con = mysql_connect($server,$user,$password) or die('erreur au serveur');
mysql_select_db($db) or die('erreur db');
mysql_select_db($db);
$file='toERP/factures.csv';
$fp = fopen($file,"w");
$sql = mysql_query("select * from facture") or die (mysql_error);
mysql_data_seek($sql,0);

while ($row = mysql_fetch_assoc($sql)){
    $sep = "";
$comma = "";
foreach ($row as $name => $value)
  {
$sep.=$comma.''.str_replace('','""',$value);
$comma =";";
  }
  $sep.="\n";

  fputs($fp,$sep);
}
    fclose($fp);
?>