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 op1
(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 .