ホームページ >バックエンド開発 >PHPチュートリアル >PDO_MYSQL と PDO_MYSQLND は 1 つのステートメントで複数の SQL クエリを実行できますか?
PDO は 1 つのステートメントで複数のクエリをサポートしていないと認識されていますが、PDO_MYSQL と PDO_MYSQLND はこの機能を提供します。
PDO_MYSQL は、PHP 5.3 では PDO_MYSQLND に置き換えられました。紛らわしいことに、名前は PDO_MYSQL のままですが、PDO_MYSQLND が MySQL PDO のデフォルトのドライバーです。
複数のクエリを同時に実行するには、次の要件を満たす必要があります。
使用中exec:
$db = new PDO("mysql:host=localhost;dbname=test;charset=utf8mb4", 'root', ''); $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $sql = "DELETE FROM car; INSERT INTO car(name, type) VALUES ('car1', 'coupe'); INSERT INTO car(name, type) VALUES ('car2', 'coupe');"; $db->exec($sql);
ステートメントの使用:
$db = new PDO("mysql:host=localhost;dbname=test;charset=utf8mb4", 'root', ''); $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $sql = "DELETE FROM car; INSERT INTO car(name, type) VALUES (:car1, :type1); INSERT INTO car(name, type) VALUES (:car2, :type2);"; $stmt = $db->prepare($sql); $stmt->execute(["car1" => "brand1", "type1" => "coupe", "car2" => "brand2", "type2" => "coupe"]); // Check for errors and collect query results do { echo $pdo->lastInsertId(); // for example } while ($stmt->nextRowset());
注: エミュレートされた準備済みステートメントを使用する場合は、適切なエンコーディングを設定してください潜在的な SQL インジェクションの脆弱性を回避するために DSN に追加します。
以上がPDO_MYSQL と PDO_MYSQLND は 1 つのステートメントで複数の SQL クエリを実行できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。