通常、PDO では 1 つのステートメントで複数のクエリを許可しませんが、特定の拡張機能はこの機能を提供します。
PDO_MYSQLND が置き換えられましたPHP 5.3 の PDO_MYSQL。これは、MySQL PDO のデフォルト ドライバーとして機能します。この拡張機能は、次の条件が満たされる場合、複数のクエリの同時実行をサポートします。
exec の使用
定数値を含む単純なクエリの場合は、exec() メソッドを使用できます。
$db = new PDO(...); $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, 0); $sql = "..."; $db->exec($sql);
ステートメントの使用
の場合変数データを含むクエリでは、プリペアド ステートメントを使用します。
$db = new PDO(...); $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, 1); $sql = "..."; $stmt = $db->prepare($sql); $stmt->execute([...]);
クエリ結果をループしてエラーを確認したり、データを収集したりすることを忘れないでください。
を使用する場合エミュレートされた準備済みステートメントでは、DSN で正しいエンコーディングが指定されていることを確認してください (PHP 5.3.6 以降で利用可能)。エンコードが正しくないと、異常な文字セットによる SQL インジェクションの軽微なリスクが生じる可能性があります。
以上がPDO_MYSQL または PDO_MYSQLND を使用して単一の PDO ステートメントで複数のクエリを実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。