Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Obsługa PDO dla wielu zapytań (PDO_MYSQL, PDO_MYSQLND)

Jak wiem, PDO_MYSQLND zastąpiono PDO_MYSQL w PHP 5.3. Mylące jest to, że nazwa nadal to PDO_MYSQL . Więc teraz ND jest domyślnym sterownikiem dla MySQL+PDO.

Ogólnie rzecz biorąc, aby wykonać wiele zapytań naraz, potrzebujesz:

  • PHP 5.3+
  • mysqlnd
  • Emulowane przygotowane wyciągi. Upewnij się, że PDO::ATTR_EMULATE_PREPARES jest ustawiony na 1 (domyślna). Alternatywnie możesz uniknąć używania przygotowanych instrukcji i użyć $pdo->exec bezpośrednio.

Korzystanie z 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);

Korzystanie z oświadczeń

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

Uwaga:

Używając emulowanych przygotowanych instrukcji, upewnij się, że ustawiłeś właściwe kodowanie (odzwierciedlające rzeczywiste kodowanie danych) w DSN (dostępne od 5.3.6). W przeciwnym razie może istnieć niewielka możliwość wstrzyknięcia SQL, jeśli używane jest nieparzyste kodowanie .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Przestarzałe:mysql_connect()

  2. Jak mogę połączyć wiele tabel SQL przy użyciu identyfikatorów?

  3. Zbuduj system biuletynów z PHP i MySQL

  4. MySQL — wyjaśnienie kodowania i sortowania zestawu znaków bazy danych

  5. Konwertuj BufferedInputStream na obraz