Этот же запрос в Админере не имеет ошибок, но в php есть
У вас есть ошибка в вашем синтаксисе SQL; проверьте руководство, которое
соответствует вашей версии сервера MariaDB для правильного использования синтаксиса
около ‘SET @lastID = last_insert_id (); ВСТАВИТЬ В
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', 'Проверка');
Вы должны выполнять свои запросы с отдельными вызовами API.
$DB->query("INSERT INTO ...");
$DB->query("SET @lastID = LAST_INSERT_ID()");
$DB->query("INSERT INTO ...");
обратите внимание, что вам на самом деле не нужен второй запрос, поскольку LAST_INSERT_ID () может использоваться напрямую.
Кроме того, вы никогда не должны использовать функцию с именем «HTML «специальные символы» для любого взаимодействия с базой данных. Вместо этого вы должны использовать подготовленные операторы.
Обратите внимание, что предложение использовать multi_query неоправданно и вводит в заблуждение, вызывая множество проблем.
Других решений пока нет …