ホームページ >バックエンド開発 >PHPチュートリアル >PDO_MYSQL/PDO_MYSQLND は 1 つのステートメントで複数のクエリをサポートしますか?

PDO_MYSQL/PDO_MYSQLND は 1 つのステートメントで複数のクエリをサポートしますか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-26 09:33:10659ブラウズ

Does PDO_MYSQL/PDO_MYSQLND Support Multiple Queries in a Single Statement?

複数のクエリに対する PDO サポート (PDO_MYSQL、PDO_MYSQLND)

元の質問:

PDO には単一のステートメントで複数のクエリを実行するためのサポートについては、次のような懸念が提起されています。 PDO_MYSQL および PDO_MYSQLND でそのような機能がサポートされるかどうか。

回答:

PDO_MYSQL および PDO_MYSQLND について:

PDO_MYSQL減価償却され、次のように置き換えられました。 PHP 5.3 の PDO_MYSQLND。ただし、名前は PDO_MYSQL のままで、MySQL PDO のデフォルトのドライバーになります。

PDO を使用した複数のクエリの実行:

複数のクエリを一度に実行するには、以下:

  • PHP 5.3 または上位
  • MySQLND
  • エミュレートされたプリペアド ステートメント (PDO::ATTR_EMULATE_PREPARES を 1 に設定。これは MySQL のデフォルトです)

使用exec:

$sql = "
DELETE FROM car;
INSERT INTO car(name, type) VALUES ('car1', 'coupe');
INSERT INTO car(name, type) VALUES ('car2', 'coupe');
";

$db->exec($sql);

注: このメソッドは、定数値を含む SQL に限定されます。

ステートメントの使用:

$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"]
);

ループオーバークエリ結果:

ステートメントの実行後は必ずクエリ結果をループして、エラーをチェックしたり、結果を収集したりしてください。

エミュレートされたプリペアド ステートメントに関する注意:

  • SQL インジェクションの可能性を回避するために、DSN に適切なエンコーディングが設定されていることを確認してください。リスクがあります。
  • 準備されたステートメントをエミュレートすると、パフォーマンスがわずかに低下する可能性があります。

以上がPDO_MYSQL/PDO_MYSQLND は 1 つのステートメントで複数のクエリをサポートしますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。