当我向mysqli_query发送多个查询时,为什么会出现错误?

时间:2016-11-28 12:34:46

标签: php mysql sql mysqli adminer

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

1 个答案:

答案 0 :(得分: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的建议是没有道理和误导的,会导致很多问题。