Req #54638 [Opn->Sus]: PDO_MYSQL Always Uses Emulated Prepared Statements
Edit report at https://bugs.php.net/bug.php?id=54638&edit=1
ID: 54638
Updated by: kalle@php.net
Reported by: me at ircmaxell dot com
Summary: PDO_MYSQL Always Uses Emulated Prepared Statements
-Status: Open
+Status: Suspended
Type: Feature/Change Request
Package: PDO related
Operating System: All
PHP Version: 5.4
Block user comment: N
Private report: N
Previous Comments:
------------------------------------------------------------------------
[2012-06-15 01:00:51] ircmaxell@php.net
I've added a pull request for this issue:
https://github.com/php/php-src/pull/108
------------------------------------------------------------------------
[2012-05-21 15:26:25] jpauli@php.net
I agree we should at least document that behavior.
#61969 is related.
------------------------------------------------------------------------
[2011-04-30 20:38:59] rasmus@php.net
This is a 5.4 feature request. There were very good reasons for not using the
native prepared statement support in MySQL < 5.1.17.
------------------------------------------------------------------------
[2011-04-30 17:38:08] damien at tournoud dot net
Before MySQL 5.1.17, prepared statements completely skip the query cache (see
http://dev.mysql.com/doc/refman/5.1/en/query-cache-operation.html).
I think it's
too early to make the switch.
------------------------------------------------------------------------
[2011-04-30 02:25:24] me at ircmaxell dot com
Description:
------------
The PDO_MySQL driver defaults emulate_prepare to 1, which forces all prepared
queries to be emulated by the driver. This means that even though the client
library (mysqlnd or libmysql) may support prepared statements, PDO will never
really use them.
You can set the attribute PDO::ATTR_EMULATE_PREPARES to 0, and it prepares and
executes the prepared statements just fine using the native mode (rather than
emulation). However this is not documented at all on PHP.NET.
Since PDO_MYSQL will fallback to emulation automatically if the client library or
server are too old for prepared statements, I would suggest that the default
value for emulate_prepare should be set to 0 to allow for true prepared
statements.
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=54638&edit=1
Thread (6 messages)