ホームページ > バックエンド開発 > PHPチュートリアル > PHP で PDO を使用して複数のクエリを実行するにはどうすればよいですか?

PHP で PDO を使用して複数のクエリを実行するにはどうすればよいですか?

Barbara Streisand
リリース: 2024-12-25 16:27:10
オリジナル
234 人が閲覧しました

How Can I Execute Multiple Queries with PDO in PHP?

複数のクエリに対する 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 を使用して複数のクエリを実行するには、以下が必要です以下:

  • PHP 5.3
  • PDO_MYSQLND ドライバー (デフォルトの MySQL ドライバーとして利用可能)
  • エミュレートされた準備済みステートメント (PDO::ATTR_EMULATE_PREPARES を 1 に設定)

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート