我正在尝试从我的数据库中获取数据并将其加载到现有的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";
}
}
?>
答案 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);
?>