1

Adminer 中的相同请求没有错误,但在 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', 'Проверка');
4

1 回答 1

2

您应该使用单独的 API 调用来运行查询。

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

请注意,您实际上不需要第二个查询,因为 LAST_INSERT_ID() 可以直接使用。

此外,您不应该使用名为“ HTML特殊字符”的函数进行任何数据库交互。您必须改用准备好的语句。

请注意,使用 multi_query 的建议是不合理且具有误导性的,会导致很多问题。

于 2016-11-28T12:57:01.463 回答