Mysql
 sql >> база данни >  >> RDS >> Mysql

Поддръжка на PDO за множество заявки (PDO_MYSQL, PDO_MYSQLND)

Както знам, PDO_MYSQLND заменен PDO_MYSQL в PHP 5.3. Объркваща част е, че името все още е PDO_MYSQL . Така че сега ND е драйвер по подразбиране за MySQL+PDO.

Като цяло, за да изпълните няколко заявки наведнъж, трябва:

  • PHP 5.3+
  • mysqlnd
  • Емулирани подготвени изявления. Уверете се, че PDO::ATTR_EMULATE_PREPARES е настроен на 1 (по подразбиране). Като алтернатива можете да избегнете използването на подготвени оператори и да използвате $pdo->exec директно.

Използване на 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);

Използване на изрази

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

Бележка:

Когато използвате емулирани подготвени оператори, уверете се, че сте задали правилно кодиране (което отразява действителното кодиране на данните) в DSN (достъпно от 5.3.6). В противен случай може да има малка възможност за SQL инжекция, ако се използва някакво странно кодиране .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как мога да потисна изхода на заглавката на колона за един SQL израз?

  2. Как да избягате от единични цитати, специални символи в MySQL

  3. Синтактична грешка поради използването на запазена дума като име на таблица или колона в MySQL

  4. Истински escape низ и PDO

  5. Предупреждение:mysqli_connect():(HY000/2002):Няма такъв файл или директория