|  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Doc Bug #61969 emulate prepares default on needs to be clearly documented
Submitted: 2012-05-07 17:50 UTC Modified: 2021-03-16 13:00 UTC
From: crmalibu at gmail dot com Assigned: cmb (profile)
Status: Closed Package: PDO related
PHP Version: 5.4.2 OS:
Private report: No CVE-ID: None
 [2012-05-07 17:50 UTC] crmalibu at gmail dot com
On this page I quote

"PDO_MYSQL will take advantage of native prepared statement support present in MySQL 4.1 and higher. If you're using an older version of the mysql client libraries, PDO will emulate them for you."

I think the default setting of PDO::ATTR_EMULATE_PREPARES being on conflicts with my quote. It should say that its capable of taking advantage, but the default is to emulate.

semi related bug report on the setting

Test script:

Expected result:

Actual result:


Add a Patch

Pull Requests

Add a Pull Request


AllCommentsChangesGit/SVN commitsRelated reports
 [2012-05-21 15:23 UTC]
I'd like to add that PDO::MYSQL_ATTR_DIRECT_QUERY does exactly the same thing as PDO::ATTR_EMULATE_PREPARES, they are just synonyms.
This can be quickly seen in source code :

Also, note that PDO::getAttribute() wont show you PDO::ATTR_EMULATE_PREPARES as it has not been implemented in the get() handler for pdo_mysql driver, referer here :
 [2013-01-03 07:02 UTC]
Interesting, I stumbled upon this topic today and will be documenting it. 
And nice MYSQL_ATTR_DIRECT_QUERY tip, I'll steal that... :)
 [2013-01-03 07:02 UTC]
-Assigned To: +Assigned To: philip
 [2017-10-24 06:21 UTC]
-Status: Assigned +Status: Open -Assigned To: philip +Assigned To:
 [2021-03-16 13:00 UTC]
-Status: Open +Status: Closed -Assigned To: +Assigned To: cmb
 [2021-03-16 13:00 UTC]
This has already been fixed.  The docs now properly state:

| PDO_MYSQL uses emulated prepares by default.
PHP Copyright © 2001-2021 The PHP Group
All rights reserved.
Last updated: Sat Oct 16 11:03:33 2021 UTC