sql >> Database >  >> RDS >> Mysql

PDO-ondersteuning voor meerdere zoekopdrachten (PDO_MYSQL, PDO_MYSQLND)

Zoals ik weet, PDO_MYSQLND vervangen PDO_MYSQL in PHP 5.3. Verwarrend is dat de naam nog steeds PDO_MYSQL . is . Dus nu is ND de standaard driver voor MySQL+PDO.

Over het algemeen heeft u het volgende nodig om meerdere zoekopdrachten tegelijk uit te voeren:

  • PHP 5.3+
  • mysqlnd
  • Geëmuleerde voorbereide verklaringen. Zorg ervoor dat PDO::ATTR_EMULATE_PREPARES is ingesteld op 1 (standaard). Als alternatief kunt u het gebruik van voorbereide instructies vermijden en $pdo->exec . gebruiken rechtstreeks.

Exec gebruiken

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

Uitspraken gebruiken

$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();

Een opmerking:

Wanneer u geëmuleerde voorbereide instructies gebruikt, zorg er dan voor dat u de juiste codering hebt ingesteld (die de werkelijke gegevenscodering weerspiegelt) in DSN (beschikbaar sinds 5.3.6). Anders kan er een kleine kans zijn op SQL-injectie als er een vreemde codering wordt gebruikt .



  1. Oracle-documentatie

  2. Gegevensvisualisatie in Microsoft Power BI

  3. SQL Express installeren

  4. MySQL migreren naar PostgreSQL op AWS RDS, deel 3