我有一个问题。我试图从数据库中获取一些数据到.csv表中。用php写入csv问题
$fn=fopen($path.$filename, "w");
$addstring = file_get_contents($path.$filename);
$addstring = 'Azonosito;Datum;Ido;Leiras;IP-cim;allomasnév;MAC-cim;Felhasznalonev;Tranzakcioazonosito;Lekerdezes eredmenye;Vizsgalat ideje;Korrelacios azonosito;DHCID;';
/*$addstring .= "\n";*/
$sql="select * from dhcpertekeles.dhcpk";
$result =mysqli_query($conn, $sql);
if ($result=mysqli_query($conn,$sql))
{
while ($row=mysqli_fetch_row($result))
{
$addstring .= "\n".$row[0].";".$row[1].";".$row[2].";".$row[3].";".$row[4].";".$row[5].";".$row[6].";".$row[7].";".$row[8].";".$row[9].";".$row[10].";".$row[11].";".$row[12].";";
};
};
/*file_put_contents($path.$filename, $addstring);*/
fwrite($fn, $addstring);
fclose($fn);
的数据是以下格式: 第一个addstring包含列名,并且没有问题
第二(addstring =。)中包含的数据: ID($行[0 ],Date($ row [1]),Time($ row [2]),Description($ row [3]),IP($ row [4]),计算机名称($ row [5]),MAC ($ row [6]),User($ row [7])(空),Transactionid($ row [8]),查询结果($ row [9]),查询时间($ row [10] ($ row [11])(空),DHCID($ row [12])(空)
它基本上是每天上传到数据库的DHCP服务器数据。现在,代码起作用了,它将我想要的所有东西写入csv,但有两个问题。
1,某些不可解释的原因代码,在包含数据的行之间的csv表中插入一个空行。删除$ row [12]解决了这个问题。我尝试删除特殊字符,将空格转换为可以看到的东西,甚至将空字符串转换为可以看到的东西。然而,没有任何实际工作,我什至尝试file_puts_content(第二个问题相同),而不是fwrite,但没有。同样的事情不断发生。如果我删除\ n它将起作用,但第二行将向右错位1列。
2,由于某种原因,最后2个字符被从csv中删除。在将其写入文件之前,要插入到csv中的字符串仍包含上述2个字符。尝试了fwrite和file_puts_content。
至于.csv格式,数据列被除以;和\ n的行。
也试着用libre office和excel阅读这个文件,认为它可能是挥之不去的excel。
在写入csv时更好地使用fputcsv。这是建议的方式,并会照顾一些肮脏的工作。 – marmeladze