我正在嘗試將一系列製表符分隔的文本文件讀入現有的MySQL表中。我的代碼很簡單:使用PHP將製表符分隔的文本文件讀入到MySQL表中
$lines = file("import/file_to_import.txt");
foreach ($lines as $line_num => $line) {
if($line_num > 1) {
$arr = explode("\t", $line);
$sql = sprintf("INSERT INTO my_table VALUES('%s', '%s', '%s', %s, %s);", trim((string)$arr[0]), trim((string)$arr[1]), trim((string)$arr[2]), trim((string)$arr[3]), trim((string)$arr[4]));
mysql_query($sql, $database) or die(mysql_error());
}
}
但無論我做什麼(因此sprintf的語句中的每個變量之前鑄造)我收到了「您的SQL語法錯誤;檢查手冊,該手冊對應於您的MySQL服務器版本,以便在「在第1行」附近使用正確的語法。
我將代碼回顯出來,粘貼到MySQL編輯器中,運行良好,它不會從PHP腳本執行。
我在做什麼錯?
硅
更新:這裏是echoe'd SQL的:
INSERT INTO wheelbase (WheelBaseCode, LanguageCode, WheelBaseDescription) VALUES ('A1', 'GBEN', '2.50-2.99m')
INSERT INTO wheelbase (WheelBaseCode, LanguageCode, WheelBaseDescription) VALUES ('A2', 'GBEN', '3.00-3.49m')
INSERT INTO wheelbase (WheelBaseCode, LanguageCode, WheelBaseDescription) VALUES ('A3', 'GBEN', '3.50-3.99m')
INSERT INTO wheelbase (WheelBaseCode, LanguageCode, WheelBaseDescription) VALUES ('A4', 'GBEN', '4.00-4.49m')
有趣的是,我現在把它創建表中的行的正確數目,但值它插入空。 ..
這可能是源文本文件中的編碼問題?
我知道我並不需要絃樂演員,這是爲了確保我不會生氣。你的代碼應該和我一樣工作,但它不會。我不需要指定字段名稱,因爲我插入到所有五個字段中(所以我可以將INSERT INTO插入到my_table VALUES中)。另外,最後兩個是DOUBLE類型,而不是VARCHAR。數據中沒有引號,即使我只處理前幾行,仍然會出現錯誤。 – 2010-04-30 15:43:02
那麼,在運行它們之前,請回顯查詢。將它們添加到您的問題。 – 2010-04-30 15:47:32
使用SQL更新了帖子 – 2010-04-30 16:14:08