Req #48859 [Opn->Wfx]: PDO mysql does not support multiple inital queries
Edit report at http://bugs.php.net/bug.php?id=48859&edit=1
ID: 48859
Updated by: uw@php.net
Reported by: techi at techi dot name
Summary: PDO mysql does not support multiple inital queries
-Status: Open
+Status: Wont fix
Type: Feature/Change Request
-Package: Feature/Change Request
+Package: *General Issues
Operating System: *
PHP Version: 5.2.10
Block user comment: N
New Comment:
It is a security and portability matter: you do not want to allow the
execution of multiple statement per one operation by default. It opens
up the door for SQL injection. Disabling the feature by default is also
what mysqli does.
Also, it is a matter of portability - shouldn't PDO try to use portable
defaults?
Previous Comments:
------------------------------------------------------------------------
[2009-11-19 00:12:05] Ivo at UFO-Net dot nl
The following workaround works for me:
SET NAMES utf8,time_zone = '+0:00'
This is possible at least for SET commands. More information about SET
is available in the MySQL manual:
http://dev.mysql.com/doc/refman/5.1/en/set-option.html.
It states that
"A SET statement can contain multiple variable assignments, separated
by commas."
------------------------------------------------------------------------
[2009-07-22 07:46:54] kalle@php.net
The question here is trival, because internally we use
mysql_options(MYSQL_INIT_COMMAND) which does not support multiple
queries then. We could probably work around it with some hackish code,
but I'll leave this up to the mysql guys to judge
------------------------------------------------------------------------
[2009-07-08 22:59:46] techi at techi dot name
Description:
------------
When using intial SQL query with PDO::MYSQL_ATTR_INIT_COMMAND, only one
query can be queried. More queries throws exception SQLSTATE[HY000]:
General error: 2014
I am not sure, if this is bug or feature or some PDO limitation, but
sometimes more than one initial query is needed
Reproduce code:
---------------
$pdo = new PDO(
'mysql:host=hostname;dbname=defaultDbName',
'username',
'password',
array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8;SET time_zone
= 'Europe/Prague'")
);
Actual result:
--------------
SQLSTATE[HY000]: General error: 2014
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/bug.php?id=48859&edit=1
Thread (5 messages)