2016-10-10 22 views
0

問題是LOAD DATA LOCAL INFILE在phpmyadmin中起作用,但是當我在php中嘗試時發生致命錯誤。LOAD DATA LOCAL INFILE給出了致命錯誤,但在phpmyadmin中工作

在phpmyadmin我的路線是這樣的。

LOAD DATA LOCAL INFILE 'e:/sam.csv' INTO TABLE `test` FIELDS TERMINATED BY ',' LINES TERMINATED BY '\r\n' (`aa`, `bb`, `cc`) 

並且在大約3秒內插入了200000行。 在PHP中我嘗試這樣做:

$dbname="test"; 
$db = new mysqli('localhost','root','',$dbname); 
mysqli_set_charset($db, 'utf8'); 
if($db->connect_errno){ 
    die('There is a problem connecting.'); 
} 


echo "Starting"; 
     $query="LOAD DATA LOCAL INFILE 'e:/sam.csv' INTO TABLE `test` FIELDS TERMINATED BY ',' LINES TERMINATED BY '\r\n' (`aa`, `bb`, `cc`)"; 
     $stmt = $db->prepare($query); 
     echo '<br>'.$query; 
     $stmt->execute(); 
     if (!$stmt) {throw new Exception($db->error);} 
echo "Ending"; 

不幸的是這每一次給了我一個致命的錯誤。 有一張名爲test的表格,字段名稱正確。

的錯誤是

Fatal error: Call to a member function execute() on a non-object

如果錯誤地拼寫一個表名或列通常會出現這個錯誤,所以我不明白這一點。

任何幫助,將不勝感激。

+0

'echo $ db-> error;'或者'echo $ stmt-> error;'在execute()之前。是'e:'映射驅動器嗎?令人懷疑的是,網絡服務器用戶已將其映射。 – AbraCadaver

+0

迴應該錯誤不會提供給我更多信息。我順便試了兩次。我仍然得到致命的錯誤。 E是文件的路徑,它在phpmyadmin中工作,但不在php中。我正在使用wampserver btw。我也在同一個位置嘗試過這個文件,沒有E :,但無濟於事 –

回答

0

我有一個答案,但不是我正在尋找的答案。顯然,LOAD DATA LOCAL INFILE不適用於準備好的語句。

另外好消息是數據不需要消毒,因爲它是以文本或數字形式導入的,並且是安全的。

$query="LOAD DATA LOCAL INFILE 'e:/sam.csv' INTO TABLE `test` FIELDS TERMINATED BY ',' LINES TERMINATED BY '\r\n' (`aa`, `bb`, `cc`)"; 
if (!($stmt = $db->query($query))) { 
     echo "\nQuery execute failed: ERRNO: (" . $db->errno . ") " . $db->error; 
};