2016-11-28 63 views
0

在Adminer了同樣的要求沒有錯誤,但在PHP是爲什麼在將多個查詢發送到mysqli_query時發生錯誤?

您的SQL語法錯誤;檢查手冊 對應於您的MariaDB服務器版本的正確語法使用 'SET @lastID = last_insert_id(); INSERT INTO p_messages(letter_id,user_id,messa'at line 1)。

PHP:

$DB->query("INSERT INTO p_letters(user_1_id, user_1_name, create_date) VALUES ('".htmlspecialchars($accountId)."', '".htmlspecialchars($username)."', now()); SET @lastID = LAST_INSERT_ID(); INSERT INTO p_messages(letter_id, user_id, message) VALUES (@lastID, '".htmlspecialchars($accountId)."', '".htmlspecialchars($text)."');"); 

SQL:

INSERT INTO p_letters(user_1_id, user_1_name, create_date) VALUES ('acc583bfa62de6f66.05116379', '212312313', now()); SET @lastID = LAST_INSERT_ID(); INSERT INTO p_messages(letter_id, user_id, message) VALUES (@lastID, 'acc583bfa62de6f66.05116379', 'Проверка'); 
+6

多個SQL語句?每條語句都有一個查詢。 – jarlh

+0

使用multi_query()而不是查詢() –

+0

multi_query()的作品,謝謝 – Alexey

回答

1

你都應該有獨立的API調用運行查詢。

$DB->query("INSERT INTO ..."); 
$DB->query("SET @lastID = LAST_INSERT_ID()"); 
$DB->query("INSERT INTO ..."); 

請注意,您實際上並不需要第二個查詢,因爲LAST_INSERT_ID()可以直接使用。

此外,您不應該使用名爲「HTML speacial chars」的函數進行任何數據庫交互。您必須改用準備好的語句。

請注意,使用multi_query的建議是不合理的和誤導性的,導致很多問題。

相關問題