我需要做批量 MYSQL插入/更新。我有批處理插入語句的工作,但當插入來作爲多個一個襯裏它不會..同樣,我一直無法生成批量更新。請看下面的例子。MYSQL:單個查詢批量插入/更新語句
批插入語句工作
$sql = "INSERT INTO `test` (`somefield`) VALUES ('test', 'test');";
db::statement($sql);
多單獨插入語句不工作
$sql = "INSERT INTO `test` (`somefield`) VALUES ('test'); INSERT INTO `test` (`somefield`) VALUES ('test');";
db::statement($sql);
SQLSTATE [42000]:語法錯誤或訪問衝突:1064您的SQL語法錯誤;在'1'(SQL:INSERT INTO
test
(somefield
)VALUES('test')'中插入'INSERT INTOtest
(somefield
)VALUES('test')'附近使用的正確語法對應的手冊。 INSERT INTOtest
(somefield
)VALUES( '測試');)
批量更新語句不工作
$sql = "INSERT INTO 'flights' (`id`, `airline`) VALUES ('142832', 'BA') ON DUPLICATE KEY UPDATE `airline`=VALUES(`airline`);"
db::statement($sql);
1064 - 你有一個錯誤的SQL語法;檢查位於第1行
對應於你的MySQL服務器版本正確的語法使用近'飛行(id
,airline
)VALUES(‘142832’,‘BA’)對重複鍵上」手冊來自多個職位#1 - 但我得到一些錯誤
多個INSERT語句 - Multiple SQL Update Statements in single query
批量更新語句 - Multiple Updates in MySQL
希望對此有所幫助 - 謝謝!
您一次只能使用該函數執行*一條語句。不要使用多語句命令,它只是麻煩。爲什麼不提供一個值列表,比如'(?,?),(?,?)',準備一個單獨的語句,並多次執行它,或使用CSV文件和'LOAD DATA INFILE'將其導入EN-集體?記住';'只對'mysql'命令行工具有意義,它是默認的分隔符,但是MySQL驅動程序沒有這個概念,你必須打包單個語句。 – tadman
另外,表名和列名使用反引號'\''進行轉義,默認情況下,字符串會獲得單引號或雙引號。你一般只需要逃脫衝突[MySQL的保留關鍵字(http://dev.mysql.com/doc/refman/5.7/en/keywords.html)或有不規則的字符,它們像一個空間列/表名,其他一切都可以保持原樣。 – tadman