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 つのクエリしか処理できません。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 に答える