2016-11-28 10 views
0

Тот же запрос в Adminer не имеет ошибок, но в РНРПочему возникает ошибка при отправке нескольких запросов в mysqli_query?

У Вас есть ошибка в вашем SQL синтаксиса; проверьте, что соответствует версии сервера MariaDB для правильного синтаксиса для использования рядом с 'SET @lastID = last_insert_id(); INSERT INTO p_messages (letter_id, user_id, messa 'в строке 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

use multi_query() вместо 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 необоснованно и вводит в заблуждение, вызывая множество проблем.

 Смежные вопросы

  • Нет связанных вопросов^_^