我一直在嘗試這一段時間,並調查儘可能多的渠道,因爲我可以在此之前問我的第一個問題。php LOAD數據本地INFILE csv到mysql
我有一個非常簡單的csv文件。一列,由linux換行符分隔的數據。我想將它導入到表(代碼)的第二列(密碼)中。第一列是主鍵自動遞增。
下面是簡單的CSV數據(Linux的換行 - \ n)的
A12345678911
A12345678912
A12345678913
A12345678914
這裏聚集文件的形式。
<form enctype="multipart/form-data" action="upload_webcodes.php" method="post">
<input type="hidden" name="MAX_FILE_SIZE" value="30000" />
<input type="hidden" name="success" value="success" />
Send this file: <input name="webcodeupload" type="file" />
<input type="submit" value="Send File" />
</form>
下面是試圖運行查詢將tmp文件加載到數據庫中的php。
<?php
function dbconnect(){
$db = mysql_connect('localhost', 'root', 'root');
mysql_select_db("mydatabase", $db);
return $db;
}
if ($_FILES['upload']['type'] === 'text/csv') {
$database = dbconnect();
$getfile = $_FILES['upload']['tmp_name'];
$sql = " LOAD DATA LOCAL INFILE $getfile INTO TABLE codes (`passcode`) LINES TERMINATED BY '\n' ";
mysql_query($sql);
}
?>
我不能得到它的工作。我正在用MAMP在本地嘗試。/tmp/php文件夾修改日期得到更新,但我看不到文件。我甚至嘗試過更大的文件,因爲我的測試文件非常簡單。 提交表單後,我已打印出$ _FILES數組。
Array
(
[webcodeupload] => Array
(
[name] => Aimport.csv
[type] => text/csv
[tmp_name] => /Applications/MAMP/tmp/php/phpsp9ezx
[error] => 0
[size] => 52
)
)
看來預期的結果是在那裏?我試過了phpmyAdmin中的查詢,如果我刪除了LINES TERMINATED BY子句,它就可以工作。我懷疑這是一個phpmyAdmin的事情,我也試過這個代碼,在查詢中有和沒有這個子句。
此外,加載頁面時還會出現一些「未定義索引」錯誤。我有點理解爲什麼,並且在這裏閱讀了線索,指出了掩蓋錯誤的方法,但我很想知道如何避免它們而不是隱藏它們。
任何輸入,將不勝感激。
謝謝。
檢查'mysql_query()'的返回值。負載查詢可能會失敗,但是您沒有捕獲任何返回值,這意味着您已經簡單地認爲它已成功。至少:'$ result = mysql_query(...)或死(mysql_error())'。 – 2013-02-08 21:14:47
請參閱此問題的答案:http://stackoverflow.com/questions/6114651/php-mysql-load-data-infile-help – freejosh 2013-02-08 21:37:59