sql >> Databasteknik >  >> RDS >> Mysql

PDO-stöd för flera frågor (PDO_MYSQL, PDO_MYSQLND)

Som jag vet, PDO_MYSQLND ersatte PDO_MYSQL i PHP 5.3. Den förvirrande delen är att namnet fortfarande är PDO_MYSQL . Så nu är ND standarddrivrutinen för MySQL+PDO.

Sammantaget, för att köra flera frågor samtidigt behöver du:

  • PHP 5.3+
  • mysqlnd
  • Emulerade förberedda uttalanden. Se till att PDO::ATTR_EMULATE_PREPARES är inställd på 1 (standard). Alternativt kan du undvika att använda förberedda satser och använda $pdo->exec direkt.

Använder exec

$db = new PDO("mysql:host=localhost;dbname=test", 'root', '');

// works regardless of statements emulation
$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, 0);

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

$db->exec($sql);

Använda uttalanden

$db = new PDO("mysql:host=localhost;dbname=test", 'root', '');

// works not with the following set to 0. You can comment this line as 1 is default
$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, 1);

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

$stmt = $db->prepare($sql);
$stmt->execute();

En notering:

När du använder emulerade förberedda uttalanden, se till att du har ställt in korrekt kodning (som återspeglar faktisk datakodning) i DSN (tillgänglig sedan 5.3.6). Annars kan det finnas en liten möjlighet för SQL-injektion om någon udda kodning används .



  1. Regex mönster inuti SQL Ersätt funktion?

  2. Grunderna för tabelluttryck, del 1

  3. MySQL-datumformat DD/MM/ÅÅÅÅ välja fråga?

  4. Hur man integrerar Oracle och Kafka