我对此很陌生,所以希望我不会偏离这里:
我有一个名为 BT 数据库的数据库,其中有一个名为 cases_cases 的表。我希望能够使用 php 脚本自动将 .csv 文件上传到其中。我制作了一个 php 脚本和一个测试 csv 文件,将它们放在托管数据库的 XUbuntu 机器的桌面上。
我通过打开终端来测试它们,导航到桌面,然后使用 php -e (testimport.php) 运行脚本。我没有收到任何错误,只有一个空行,所以它似乎运行正常,但是当我进入表格时,csv 中的数据尚未上传。谁能建议我在这里做错了什么?我的 PHP 脚本如下:
<?php
//connect to the database
$connect = mysql_connect("localhost","user","password")
or die("Could not connect.")
;
mysql_select_db("BT Database",$connect);
//get the csv file
$handle = fopen("import.csv","r")
or die("Couldn't find or open csv file")
;
//set up the query to load data into the table, then run it.
$loadcases = "LOAD DATA INFILE 'import.csv'
INTO TABLE cases_cases
FIELDS TERMINATED BY ''
OPTIONALLY ENCLOSED BY '\"'
LINES TERMINATED BY ',,,\\r\\n'
IGNORE 1 LINES
(name, @dummy, case_specific_notes, type, initiation_date, @dummy,)"
or die("error loading file.")
;
mysql_query($loadcases)
;
?>
编辑 1: 听从大家的好建议,我去掉了逗号,将我的脚本升级到mysqli,并在我的脚本中调用了实际的mysql错误。这显示了一些以前看不见的问题,这些问题很容易修复。
但是,现在我遇到了与以前相同的问题,即它运行并且没有出现错误,但数据库表中没有显示任何内容。新脚本如下。有什么想法可能会出错吗?
<?php
$mysqli = new mysqli("localhost","xampp","bt4521","BT Database");
/* check connection */
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
$sql = "LOAD DATA INFILE 'sfimport/sfdumptest.csv' INTO TABLE cases_cases
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\\r\\n'
IGNORE 1 LINES
(name, @dummy, case_specific_notes, type, initiation_date, @dummy, @dummy)
";
//Try to execute query (not stmt) and catch mysqli error from engine and php error
if (!($stmt = $mysqli->query($sql))) {
echo "\nQuery execute failed: ERRNO: (" . $mysqli->errno . ") " . $mysqli->error;
};
?>
最佳答案
看到您可能不会收到关于您问题下的评论的通知,或者您是否已阅读它们,我改为在答案区域提交以下内容。
@dummy,)
中的尾随逗号不应该出现。
使用 die(mysql_error($connect))
会引发语法错误,而不是使用通用的回显文本。
旁注:当然希望这不是一个糟糕的粘贴/打字错误。
关于php - 使用php将csv上传到数据库表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30107818/