我编写了我的第一个PHP脚本,它将一个 csv 文件导入到数据库中,对其进行处理并将其再次导出到另一个 csv 文件中。
问题是,即使我可以在 phpMyAdmin 中检查数据库并且“类型”列确实存在,但当我运行脚本时它会说
错误:“字段列表”中的未知列“类型”
因为它实际上并没有创建该列。我真的不明白那里发生了什么,我希望有人能给我一些启示。我知道我的代码不是很好,它可以以更简单的方式完成,但是一旦我的代码实际工作,我将为下一步进行优化:P
它有两个部分,导入和处理:
<?php
header('Access-Control-Allow-Origin: *');
$sep = ",";
$fp = fopen('./test.csv', 'w+');
$servidor="localhost"; $usuario="root";
$contrasena="";
$db=mysqli_connect($servidor,$usuario,$contrasena);
$Type="a"; mysqli_select_db($db, "test");
$sql="DROP TABLE test;";
$sql.="CREATE TABLE test (Country varchar(55), Code varchar(55), Rate varchar(55), Currency varchar(55), Indicator varchar(55), EffectiveDate varchar(55));";
$sql.="LOAD DATA LOCAL INFILE 'http://localhost/test2.csv' INTO TABLE test FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' ignore 1 lines;";
$sql.="ALTER TABLE test ADD Type VARCHAR(55) NULL;";
if (mysqli_multi_query($db,$sql)) {
do { }
while (mysqli_next_result($db)); }
mysqli_close($db);
还有出口,我分开做,因为我的知识不是很好。
$db2=mysqli_connect($servidor,$usuario,$contrasena);
mysqli_select_db($db2, "test");
$sql1="SELECT Country, Code, Rate, EffectiveDate, Type FROM test LIMIT 100;";
$datos1=mysqli_query($db2, $sql1)
or die ("Error: ".mysqli_error($db2));
while($datos2 = mysqli_fetch_array($datos1)) {
$linea = $datos2['Country'].$sep.$datos2['Code'].$sep.$datos2['Rate'].$sep.$datos2['EffectiveDate'].$sep.$datos2['Type'].$sep;
fwrite($fp,$linea);
}
fclose($fp);
mysqli_close($db2);
echo "GOOD JOB!";
?>
非常感谢您的帮助。