簡體   English   中英

如何解決分號附近的多語句mysql查詢上的語法錯誤

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM