Trotz der Auffassung, dass PDO nicht mehrere Abfragen in einer einzigen Anweisung unterstützt, bieten PDO_MYSQL und PDO_MYSQLND diese Funktionalität.
PDO_MYSQL wurde in PHP 5.3 durch PDO_MYSQLND ersetzt. Verwirrenderweise bleibt der Name PDO_MYSQL, aber PDO_MYSQLND ist der Standardtreiber für MySQL PDO.
Um mehrere Abfragen gleichzeitig auszuführen, müssen die folgenden Anforderungen erfüllt sein:
Verwenden 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);
Anweisungen verwenden:
$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());
Hinweis: Wenn Sie emulierte vorbereitete Anweisungen verwenden, legen Sie die entsprechende Kodierung fest im DSN, um potenzielle SQL-Injection-Schwachstellen zu vermeiden.
Das obige ist der detaillierte Inhalt vonKönnen PDO_MYSQL und PDO_MYSQLND mehrere SQL-Abfragen in einer Anweisung ausführen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!