複数のクエリに対する PDO サポート: PDO_MYSQL および PDO_MYSQLND
従来の PDO は、単一のステートメントでの複数のクエリの実行をネイティブにサポートしていません。ただし、PDO_MYSQL および PDO_MYSQLND は、この制限に対処するために開発されました。
PDO_MYSQL および PDO_MYSQLND
PDO_MYSQL は現在、非推奨とみなされています。実際、PHP 5.3 以降、MySQL PDO はデフォルトで PDO_MYSQLND ドライバーを使用しています。
PDO を使用した複数のクエリの実行
PDO を使用して複数のクエリを実行するには、以下が必要です以下:
exec の使用
SQL の場合定数値を含むクエリの場合は、exec() メソッドを使用できます。
$db->exec(" DELETE FROM car; INSERT INTO car(name, type) VALUES ('car1', 'coupe'); INSERT INTO car(name, type) VALUES ('car2', 'coupe'); ");
プリペアド ステートメントの使用
PHP 変数のデータを含むクエリの場合は、プリペアド ステートメントが必要です:
$stmt = $db->prepare(" DELETE FROM car; INSERT INTO car(name, type) VALUES (:car1, :type1); INSERT INTO car(name, type) VALUES (:car2, :type2); "); $stmt->execute([ "car1" => "brand1", "type1" => "coupe", "car2" => "brand2", "type2" => "coupe" ]); while ($stmt->nextRowset()) { echo $db->lastInsertId(); }
どちらの場合も、設定することが不可欠であることに注意してください。複数のクエリを使用する場合、PDO::ATTR_EMULATE_PREPARES を 1 に設定します。
エンコーディングに関する注意
エミュレートされたプリペアド ステートメントを使用する場合は、潜在的な SQL を防ぐために、DSN で正しいエンコーディングを指定していることを確認してください。インジェクションの脆弱性。
以上がPHP で PDO を使用して複数のクエリを実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。