MySQli一直声明我的"组合"查询的第一个选择部分存在语法错误,如下所示:
$my_massive_query =
'START TRANSACTION WITH CONSISTENT SNAPSHOT;
SELECT d.id AS `Location ID`, ...
SELECT d.id AS `Location ID`, ...
SELECT d.id AS `Location ID`, ...
SELECT d.id AS `Location ID`, ...
SELECT d.id AS `Location ID`, ...
COMMIT';
$mysqli->query($my_massive_query);
这在 php 中是"不允许的"吗?是否必须使用mysqli函数,如下所示:
$mysqli->autocommit(FALSE);
$mysqli->query("SELECT ...");
$mysqli->query("SELECT ...");
$mysqli->query("SELECT ...");
$mysqli->commit();
我已经在 mysql 中执行了查询(在使用 var_dump 按原样获取它之后),并且它执行得很好,所以我认为真的不存在语法问题,也许不允许将查询"组合"在一个字符串中?
我担心START TRANSACTION WITH CONSISTENT SNAPSHOT;
有一些额外的条件,仅将自动提交设置为 false 将无法满足这些条件。
mysqli::query 一次只能处理 1 个查询。要在一个字符串中执行多个查询,请使用 mysqli::multi_query。
使用 API 函数,您可以在控制台中执行所有操作。
但是,必须单独调用每个命令。这是非常简单的规则
$mysqli->query("START TRANSACTION WITH CONSISTENT SNAPSHOT");
$mysqli->query("SELECT ...");
$mysqli->query("SELECT ...");
$mysqli->query("COMMIT");