【发布时间】:2016-06-30 21:00:18
【问题描述】:
我正在尝试使用 load data infile 查询将数据插入 MySQL 表。我有一个 HTML 表单,它接受要上传的文本文件,然后尝试处理。
文件
00|Oakleaf Forest|Norfolk|VA|United States|PC
01|Igo|Lowell|MA|United States|PC
02|Mint|Lawrence|MA|United States|PC
03|Hosa|Boston|MA|United States|PC
HTML
<p>Please upload file below:</p>
<form action="process.php" method="post" enctype="multipart/form-data">
<input type="file" name="file" accept="text/plain">
<input type="submit">
</form>
PHP
/* processFile
* Process the submitted file
*
* @param Array - file for processing
*/
function processFile($file) {
// Get global variable
global $DB;
// file contents
$file_contents = $file["tmp_name"];
$SQL_statement = "LOAD DATA INFILE '$file_contents' INTO TABLE organization FIELDS TERMINATED BY '|'
LINES TERMINATED BY '\n' IGNORE 2 LINES
(ein, legal_name, city_name, state_name, country_name, description);";
// Run SQL query
$DB->execute($SQL_statement);
}
当我上传文件时,表格中没有插入任何内容。
我尝试使用echo($SQL_statement); 进行调试,它返回以下查询:
LOAD DATA INFILE '/Applications/XAMPP/xamppfiles/temp/phpOtL2q1' INTO TABLE organization FIELDS TERMINATED BY '|' LINES TERMINATED BY ' ' IGNORE 2 LINES (ein, legal_name, city_name, state_name, country_name, description);
我在这里错过了什么?
【问题讨论】:
-
pdo/mysqli 默认在失败时返回布尔值 false,并且您不会检查它。永远不要假设数据库调用成功。始终假设失败,检查失败,并将成功视为惊喜。