|  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #51138 Impossible to use "IN()"
Submitted: 2010-02-25 03:43 UTC Modified: 2010-02-25 11:50 UTC
From: fmaz008 at gmail dot com Assigned:
Status: Not a bug Package: PDO related
PHP Version: 5.2.12 OS: n/a
Private report: No CVE-ID: None
 [2010-02-25 03:43 UTC] fmaz008 at gmail dot com
Using MySQL and InnoDB table, if you prepare this query:
SELECT * FROM foo WHERE id IN(:values);

You will be totally unable to use it, thoses solutions doesn't work:
$arr = array(1,2,3,4,5);
$prep->bindParam(':values',	$arr, PDO::PARAM_STMT); //Invalid Array to String conversion

$arr = array(1,2,3,4,5);
$prep->bindParam(':values',	implode(',', $arr), PDO::PARAM_STR); //Seems to be interpreted as "1,2,3,4,5" instead of "1","2","3","4","5" or plain integer values.


Actual work arround is to generate a string to inject in the query string before preparing it. But it's not a good solution as I often need to use prepared statement in loop. So if I must prepare and reprepare and re-reprepare, that's not usefull.


A PDO::PARAM_RAWSTR or PDO::PARAM_UNPROTECTED_STR might be a quick & good workarround to solve this problem until a better fix.

Reproduce code:
$arr = array(1,2,3,4,5);
$prep->prepare('SELECT * FROM foo WHERE id IN(:values);');
$prep->bindParam(':values', implode(',', $arr), PDO::PARAM_STMT);

Expected result:
SELECT * FROM foo WHERE id IN(1,2,3,4,5);

Actual result:
SELECT * FROM foo WHERE id IN("1,2,3,4,5");


Add a Patch

Pull Requests

Add a Pull Request


AllCommentsChangesGit/SVN commitsRelated reports
 [2010-02-25 07:41 UTC]
Thank you for taking the time to write to us, but this is not
a bug. Please double-check the documentation available at and the instructions on how to report
a bug at

Databases allow only to bind one value per placeholder. Nothing we can change.
 [2010-02-25 11:50 UTC] fmaz008 at gmail dot com
This is still a major design flaw, and I'm far from beeing the only one to ran into this problem (google a bit, you'll see)
Something should(must) be emulated.

I've also read the how to repport a bug, I can't figure out what you're trying to tell me. And giving me a link to all the PHP manual is a bit ridiculous.
 [2010-05-17 17:53 UTC] greg dot martyn at gmail dot com
This is a duplicate of Request #48431  	Support PDO::PARAM_STMT
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Sun Jul 14 16:01:28 2024 UTC