使用PHP将CSV加载到MySQL表中

时间:2012-12-18 19:23:39

标签: php mysql

我正在尝试使用PHP脚本将CSV导入MySQL表。此SQL命令成功将CSV文件导入SQL表:

mysql> LOAD DATA LOCAL INFILE 'property_re_1.csv' 
-> REPLACE INTO TABLE `markers`
-> FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' ESCAPED BY '\\'
-> LINES TERMINATED BY '\n' IGNORE 1 LINES;
Query OK, 315 rows affected (0.01 sec)
Records: 315  Deleted: 0  Skipped: 0  Warnings: 0

现在我想将此SQL命令转换为PHP脚本。这是我编写PHP脚本的尝试:

<?PHP
$dbhost = 'localhost';
$dbuser = 'myusername';
$dbpasswd = 'mypassword';
$db = "db_markers";

$dbh = mysql_connect($dbhost, $dbuser, $dbpasswd) or die("Unable to connect to SQL server");
$my_db = @mysql_select_db($db, $dbh) or die("Unable to select database");

$file = $_SERVER['DOCUMENT_ROOT']."/path/property_re_1.csv";

$result=mysql_query("LOAD DATA LOCAL INFILE '$file' REPLACE INTO TABLE `markers` FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' ESCAPED BY '\\' LINES TERMINATED BY '\n' IGNORE 1 LINES");   
?>

此脚本会导致错误:

  

HTTP错误500(内部服务器错误):服务器尝试完成请求时遇到意外情况。

错误日志显示为:

[18-Dec-2012 12:37:38] PHP Parse error: syntax error, unexpected    T_CONSTANT_ENCAPSED_STRING in /path/testconnect.php on line 13

在第13行调用$ Result变量,因此错误必须在其中。

我不确定这个错误的原因是什么。非常感谢任何帮助!

1 个答案:

答案 0 :(得分:3)

错误原因是您发送给网络服务器的请求。 Web服务器尝试完成请求并执行脚本来执行此操作(在您的情况下是PHP脚本。

PHP脚本现在失败了。网络服务器只知道它失败了,但由于网络服务器不知道任何具体内容,它只会回复所谓的内部服务器错误(内部发生的错误),代码500.确切的错误信息是隐藏,因为没有预料到错误,也没有内部信息泄露给外界。

仅从信息中,没有人能说出发生了什么。您需要查看网络服务器的错误日志并检查内部报告的内容。

在您的情况下,我会假设您的PHP脚本有致命错误。您还可以启用PHP错误显示和日志记录,请参阅PHP Does Not Display Error Messages

执行此操作时,您可能会看到更多错误消息。我们的错误参考中解释了常见错误消息:Reference - What does this error mean in PHP?

如果我应该猜测,我会说你看到了这个,因为你的PHP文件没有解析。最有可能出现以下错误:

快乐的解决问题!