2012-05-16 28 views
10

PDO có tùy chọn PDO::ATTR_EMULATE_PREPARES kiểm soát nếu các câu lệnh đã chuẩn bị chỉ được mô phỏng nếu không được DB hỗ trợ hoặc luôn. Tuy nhiên, nó không đề cập đến nếu nó luôn luôn mô phỏng chúng theo mặc định hay không.PDO có luôn luôn sử dụng các câu lệnh được mô phỏng chuẩn hóa theo mặc định không?

Thông thường người ta sẽ giả định rằng thi đua chỉ được sử dụng nếu cần thiết nhưng vì nó PHP không có gì có thể giả định chỉ vì nó lành mạnh ...

+2

Có thể cho tôi biết mô phỏng có nghĩa là gì? Và BAD có thể như thế nào? – Shubham

+1

Sẽ không có kiểm tra lỗi nào trong suốt cuộc gọi '-> prepare()' và PDO cần phải thoát khỏi các tham số của bạn thay vì truyền chúng một cách riêng biệt tới cơ sở dữ liệu. Nó cũng sẽ không lợi nhuận từ việc tối ưu hóa cơ sở dữ liệu có thể làm khi bạn chuẩn bị một câu lệnh và chúng thực thi nó nhiều lần. – ThiefMaster

Trả lời

14

Phụ thuộc vào trình điều khiển cơ sở dữ liệu. Chúng được always mô phỏng theo mặc định cho MySql (mặc dù tất nhiên bạn có thể tắt tùy chọn theo cách thủ công); trong Postgres, thiết lập mặc định thích hợp là detected dynamically.

+1

Điều này gây nhầm lẫn. Tài liệu tham khảo mã của bạn nói điều gì đó khác với tài liệu: _PDO_MYSQL sẽ tận dụng lợi thế của hỗ trợ tuyên bố chuẩn bị sẵn có trong MySQL 4.1 trở lên. Nếu bạn đang sử dụng phiên bản cũ hơn của thư viện máy khách mysql, PDO sẽ mô phỏng chúng cho bạn._ (http://www.php.net/manual/en/ref.pdo-mysql.php) – CodeZombie

+3

@ZombieHunter: Nếu mã nói điều gì đó khác với tài liệu thì rõ ràng tài liệu (hoặc cách giải thích của nó) là sai. Trong trường hợp cụ thể này IMHO nó nên đọc "** có thể ** tận dụng". Tài liệu là sai tất cả các thời gian (PHP thường xuyên hơn những người khác, như là điển hình ... * thở dài *); Tôi đã mất số lần tôi phát hiện ra * hoàn toàn nằm * trong tài liệu bản thân mình. – Jon

+1

Tôi biết rằng tôi có thể tin tưởng mã bạn tham chiếu hơn tài liệu nhưng không thể tin được. Đó thực sự là một nỗi đau, bạn phải kiểm tra mọi thứ trong PHP trước khi bạn tin tưởng nó: -/ – CodeZombie

Các vấn đề liên quan