Bug #48314 [Opn->Bgs]: PDO_MySQL doesn't use prepared statements

From: Date: Thu, 13 Jan 2011 10:51:47 +0000
Subject: Bug #48314 [Opn->Bgs]: PDO_MySQL doesn't use prepared statements
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-157880@lists.php.net to get a copy of this message
Edit report at http://bugs.php.net/bug.php?id=48314&edit=1 ID: 48314 Updated by: johannes@php.net Reported by: vrana@php.net Summary: PDO_MySQL doesn't use prepared statements -Status: Open +Status: Bogus Type: Bug Package: PDO related Operating System: Windows PHP Version: 5.2.9 Block user comment: N Private report: N New Comment: As Ulf said: There is a fallback in PDO to emulate in case the prepare failed. The list of prepareable statements can be found on http://dev.mysql.com/doc/refman/5.1/en/c-api-prepared-statements.html for MySQL 5.1 and on http://dev.mysql.com/doc/refman/5.5/en/c-api-prepared-statements.html for the current 5.5. Previous Comments: ------------------------------------------------------------------------ [2010-09-06 11:14:31] uw@php.net The sample script works fine with PHP 5.2.15-dev and MySQL 5.1.45-debug . What could happen in your case is that your server does not support preparing it and falls back to emulation. ------------------------------------------------------------------------ [2009-11-04 19:01:19] uw@php.net Occasionally I am tempted to bogus any PDO MYSQL character set bug report I see. SET NAMES won't be recognized by the client and the wrong character set will be used for escaping. Adding a DSN option to specify the character set upon connect and setting it properly through the C API may be only five lines of code. But even if that would be implemented we would still have the PDO PS emulation as a potential pitfall. PDO will call the driver for escaping bound values and the driver will properly escape the values. But the PDO SQL parser itself won't care much about the current character set when searching for placeholders. ------------------------------------------------------------------------ [2009-09-29 21:41:34] uw@php.net Well, you should not use SET NAMES. It will not change the charset used for quoting. Currently there is no way to change the charset via an API call. Try ext/mysqli... ------------------------------------------------------------------------ [2009-05-18 13:45:30] vrana@php.net Same result. ------------------------------------------------------------------------ [2009-05-18 13:43:31] johannes@php.net Try also disabling PDO::ATTR_EMULATE_PREPARES. PHP 5.3 got some improvements/fixes with PDO_mysql (due to mysqlnd work) not sure if some parts can be backported. ------------------------------------------------------------------------ The remainder of the comments for this report are too long. To view the rest of the comments, please view the bug report online at http://bugs.php.net/bug.php?id=48314 -- Edit this bug report at http://bugs.php.net/bug.php?id=48314&edit=1

« previous php.bugs (#157880) next »