【发布时间】:2014-10-13 20:31:11
【问题描述】:
我有一个将 CSV 文件导入我的数据库的 php 文件。由于我的托管服务提供商升级到 PHP 5.4,我在 'LINES TERMINATED BY' 行上收到错误消息,但我不知道为什么。这是我的代码:
<?php
require('phpsqlajax_dbinfo.php');
$databasehost = $db_host;
$databasename = $db_name;
$databasetable = "tbl_csvImport";
$databaseusername=$db_user;
$databasepassword = $db_pass;
$fieldseparator = ",";
$lineseparator = "\n";
$csvfile = "doecsv.csv";
echo $lineseparator;
if(!file_exists($csvfile)) {
die("File not found. Make sure you specified the correct path.");
}
try {
$pdo = new PDO("mysql:host=$databasehost;dbname=$databasename",
$databaseusername, $databasepassword,
array(
PDO::MYSQL_ATTR_LOCAL_INFILE => true,
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
)
);
} catch (PDOException $e) {
die("database connection failed: ".$e->getMessage());
}
$pdo->exec("DELETE FROM `$databasetable`");
try {
$affectedRows = $pdo->exec("
LOAD DATA LOCAL INFILE ".preg_replace('/"[^"]+"/','',$pdo->quote($csvfile))." INTO TABLE `$databasetable`
FIELDS TERMINATED BY ".$pdo->quote($fieldseparator)."
OPTIONALLY ENCLOSED BY ".$pdo->quote('"')."
LINES TERMINATED BY ".$pdo->quote($lineseparator)."IGNORE 1 LINES");
} catch (Exception $e) {
die ("CSV Parse Failed: ".$e->getMessage()." | Error on line: ".$e->getLine());
}
echo" Success. <br/>";
?>
错误代码:SQLSTATE[42000]:语法错误或访问冲突:1148 此 MySQL 版本不允许使用的命令 |在线错误:35
【问题讨论】:
-
错误信息是什么?
-
IGNORE 之前不是少了一个空格吗?
-
我在忽略之前添加了一个空格并尝试了它,但没有帮助。我已经把它恢复到原来的样子了。
-
你检查过 phpinfo();是否加载了 PDO?更新 PHP 后,有时我必须更改扩展的加载顺序,因为没有加载任何 SQL 扩展。