これは私がこれを理解するのに役立った情報源です...
これは、多数のSQLステートメントを同時に送信するために一部のMySQLクライアントが実装したものにすぎないと思います。
mysqliドライバー この機能は実装されていません。
したがって、これは機能するはずです。
$query = <<<QUERY
DROP VIEW IF EXISTS `myview` ;
SHOW WARNINGS;
DROP TABLE IF EXISTS `myview`;
SHOW WARNINGS;
CREATE OR REPLACE VIEW `myview` AS
...view definition...
;
SHOW WARNINGS;
SET [email protected]_SQL_MODE;
SET [email protected]_FOREIGN_KEY_CHECKS;
SET [email protected]_UNIQUE_CHECKS;
QUERY;
$result = mysqli_multi_query($dbConnection, $query);
同じmysqliドライバー、multi_query関数(プロシージャの作成時に区切り文字を使用)、および DELIMITER の削除で、同じ問題が発生しました。 私のSQLからはうまくいきました。