2012-12-18 26 views
2

我試圖用PHP腳本將CSV導入到MySQL表中。此SQL命令成功將CSV文件導入到SQL表中:使用PHP將CSV加載到MySQL表中

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 Error 500 (Internal Server Error): An unexpected condition was encountered while the server was attempting to fulfill the request.

錯誤日誌上寫着:

[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,所以錯誤必須在其中。

我不知道這個錯誤的原因是什麼。任何幫助是極大的讚賞!

+0

你看過你的日誌文件嗎? – dualed

+0

是的,這裏是日誌錯誤:[18-Dec-2012 12:37:38] PHP解析錯誤:語法錯誤,第13行/path/testconnect.php中出現意外的T_CONSTANT_ENCAPSED_STRING。$ result變量在行13. – AME

+0

像我想的那樣啊。你明白錯誤的含義嗎? – hakre

回答

3

錯誤的原因是你已經發送到Web服務器的請求。 Web服務器試圖完成請求並執行腳本來完成這個任務,在你的情況下,PHP腳本。

PHP腳本現在失敗。 Web服務器只知道它失敗了,但作爲網絡服務器不知道什麼具體的,它只會給後面的所謂內部服務器錯誤(錯誤發生內部),代碼500。確切的錯誤信息被隱藏,因爲錯誤是沒有預料到,內部信息也不應該泄露給外部世界。

從單純的信息來看,沒有人能說出發生了什麼。您需要查看Web服務器的錯誤日誌並檢查內部報告是什麼。

在你的情況我會假設你的PHP腳本有一個致命的錯誤。您也可以啓用PHP錯誤顯示和日誌記錄,請參閱PHP Does Not Display Error Messages

當你這樣做,你可能會看到更多的錯誤消息。常見錯誤消息在我們的錯誤參考中進行了解釋:Reference - What does this error mean in PHP?

如果我應該把一個猜測,我會說你看到這一點,因爲你的PHP文件不分析。最有可能出現以下錯誤:

幸福的煩惱 - 射擊!