Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Hỗ trợ PDO cho nhiều truy vấn (PDO_MYSQL, PDO_MYSQLND)

Như tôi biết, PDO_MYSQLND đã thay thế PDO_MYSQL trong PHP 5.3. Phần khó hiểu là tên vẫn là PDO_MYSQL . Vì vậy, bây giờ ND là trình điều khiển mặc định cho MySQL + PDO.

Nhìn chung, để thực hiện nhiều truy vấn cùng một lúc, bạn cần:

  • PHP 5.3+
  • mysqlnd
  • Các câu lệnh đã chuẩn bị được mô phỏng. Đảm bảo PDO::ATTR_EMULATE_PREPARES được đặt thành 1 (mặc định). Ngoài ra, bạn có thể tránh sử dụng các câu lệnh đã chuẩn bị sẵn và sử dụng $pdo->exec trực tiếp.

Sử dụng thực thi

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

Sử dụng câu lệnh

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

Một lưu ý:

Khi sử dụng các câu lệnh chuẩn bị mô phỏng, hãy đảm bảo rằng bạn đã đặt mã hóa phù hợp (phản ánh mã hóa dữ liệu thực tế) trong DSN (khả dụng kể từ 5.3.6). Nếu không thì có thể có một chút khả năng đưa vào SQL nếu một số mã hóa kỳ lạ được sử dụng .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Levenshtein:MySQL + PHP

  2. Ghi vào cơ sở dữ liệu MySQL với gấu trúc bằng SQLAlchemy, to_sql

  3. Cách sử dụng động nhiều cơ sở dữ liệu cho một mô hình trong CakePHP

  4. Thay thế cho Intersect trong MySQL

  5. Chọn N hàng cuối cùng từ MySQL