[英]How can I solve syntax error on multistatement mysql query near semicolon
我正在嘗試使用mysql進行多語句查詢,但出現語法錯誤:
“您的SQL語法有誤;請在與MySQL服務器版本相對應的手冊中找到在第2行'INSERT INTO vinas_new(img,new_order,publi')附近使用正確的語法”
奇怪的是,如果我回顯查詢的字符串,然后嘗試在Navicat上執行它,那么它將正常工作。
我要使用的查詢字符串是此字符串。
'BEGIN;
INSERT INTO vinas_new (
img,
new_order,
publicationDate,
active,
cover
)VALUES(
"'.$data['img'].'",
"'.$data['new_order'].'",
"'.$data['publicationDate'].'",
"'.$data['active'].'",
"'.$data['cover'].'"
);
INSERT INTO vinas_new_content (
newId,
lang,
title,
text
)VALUES(
LAST_INSERT_ID(),
"'.mysql_real_escape_string($data['lang']).'",
"'.mysql_real_escape_string($data['title']).'",
"'.mysql_real_escape_string($data['text']).'"
);
COMMIT;';
我想這與分號有關,並且我嘗試使用定界符來避免此問題,但是沒有任何運氣。
有什么建議么?
感謝您的時間。
調試此問題的最簡單方法是僅向我們顯示echo $sql
結果(或存儲查詢的變量名稱是什么)。
但是,您似乎使用了不支持多個查詢的過時的mysql_
API:
mysql_query()向與指定的link_identifier關聯的服務器上的當前活動數據庫發送唯一查詢(不支持多個查詢)
嘗試切換到mysqli
(或PDO)並使用准備好的語句 (或其中的3條),這樣您就不必自己轉義數據(如果您想使用mysql_
,則無論如何都必須將其拆分為3個查詢;或者為任務創建存儲過程)。
或者,如果您堅持一次執行所有操作(我看不到任何理由這樣做),則可以使用mysqli::multi_query()
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.