我正在尝试使用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变量,因此错误必须在其中。
我不确定这个错误的原因是什么。非常感谢任何帮助!
答案 0 :(得分:3)
错误原因是您发送给网络服务器的请求。 Web服务器尝试完成请求并执行脚本来执行此操作(在您的情况下是PHP脚本。
)PHP脚本现在失败了。网络服务器只知道它失败了,但由于网络服务器不知道任何具体内容,它只会回复所谓的内部服务器错误(内部发生的错误),代码500.确切的错误信息是隐藏,因为没有预料到错误,也没有内部信息泄露给外界。
仅从信息中,没有人能说出发生了什么。您需要查看网络服务器的错误日志并检查内部报告的内容。
在您的情况下,我会假设您的PHP脚本有致命错误。您还可以启用PHP错误显示和日志记录,请参阅PHP Does Not Display Error Messages。
执行此操作时,您可能会看到更多错误消息。我们的错误参考中解释了常见错误消息:Reference - What does this error mean in PHP?。
如果我应该猜测,我会说你看到了这个,因为你的PHP文件没有解析。最有可能出现以下错误:
快乐的解决问题!