Почему возникает ошибка, когда я отправляю несколько запросов в mysqli_query?

Этот же запрос в Админере не имеет ошибок, но в php есть

У вас есть ошибка в вашем синтаксисе 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', 'Проверка');

1 ответ

Вы должны выполнять свои запросы с отдельными вызовами API.

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

обратите внимание, что вам на самом деле не нужен второй запрос, так как LAST_INSERT_ID() может использоваться напрямую.

Кроме того, вы никогда не должны использовать функцию с именем "специальные символыHTML " для любого взаимодействия с базой данных. Вместо этого вы должны использовать подготовленные заявления.

Обратите внимание, что предложение использовать multi_query неоправданно и вводит в заблуждение, вызывая множество проблем.

Другие вопросы по тегам