0

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;仅将 autocommit 设置为 false 将无法满足一些额外的条件。

4

2 回答 2

1

mysqli::query一次只能处理 1 个查询。要在一个字符串中执行多个查询,请使用mysqli::multi_query

于 2013-11-13T13:39:53.187 回答
1

使用 API 函数,您可以在控制台中做所有可以做的事情。
但是,每个命令都必须单独调用。这是非常简单的规则

$mysqli->query("START TRANSACTION WITH CONSISTENT SNAPSHOT");
$mysqli->query("SELECT ...");
$mysqli->query("SELECT ...");
$mysqli->query("COMMIT");
于 2013-11-13T13:41:05.397 回答