【问题标题】:Loading CSV into MySQL table with PHP使用 PHP 将 CSV 加载到 MySQL 表中
【发布时间】:2012-12-18 19:23:38
【问题描述】:

我正在尝试使用 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

$Result 变量是在第 13 行调用的,所以错误一定在其中。

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

【问题讨论】:

  • 您查看过您的日志文件吗?
  • 是的,这是来自日志的错误:[18-Dec-2012 12:37:38] PHP Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in /path/testconnect.php on line 13。 $result 变量在第 13 行。
  • 啊,就像我想象的那样。你明白错误的含义吗?
  • 你必须在ENCLOSED BY之后转义"
  • @dualed:\` and \n` 也是错误的 ;) - @Ame:请参阅php.net/string 和双引号字符串。您不能将所有字符一对一地复制到字符串中,有些需要特殊处理。

标签: php mysql


【解决方案1】:

错误的原因是您发送到网络服务器的请求。网络服务器尝试满足请求并执行脚本来执行此操作,在您的情况下是 PHP 脚本。

PHP 脚本现在失败。网络服务器只知道它失败了,但是由于网络服务器不知道任何具体的事情,它只会返回所谓的Internal Server Error(错误发生在内部),代码500。确切的错误信息是隐藏,因为错误是意料之外的,不应将内部信息泄露给外界。

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

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

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

如果我猜测一下,我会说你看到这个是因为你的 PHP 文件没有解析。很可能是以下错误:

故障排除愉快!

【讨论】:

    猜你喜欢
    • 2017-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-07
    • 2015-04-07
    • 1970-01-01
    • 2017-04-19
    • 1970-01-01
    相关资源
    最近更新 更多