Re: PDO prepared statements and value list for MySQL "IN"

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



At 04:16 PM 7/8/2008, Philip Thompson wrote:
>On Jul 8, 2008, at 11:55 AM, TK wrote:
>
>>I'd like to use a PDO prepared statement to perform a MySQL query  
>>that uses the IN function.
>>
>>I.e.:
>>$stmt = $pdo->prepare('
>>  select *
>>  from mytable
>>  where myfield IN (:contents)
>>);
>>$stmt->bindValue(':contents', $contents);
>>$stmt->execute();
>>
>>Here's the problem:
>>
>>If $contents is set to a single value, everything's fine:
>>  $contents = 'mystring';
>>
>>How can I include multiple values in here?  If $contents is set to  
>>an array, PHP throws an "Array to string conversion" notice.
>>i.e. $contents = array('mystring1', 'mystring2');
>>
>>If $contents is set to a comma-separated list, no matches are  
>>returned (probably because the entire "list" is being passed to  
>>MySQL as a single value, not multiple values).
>>I.e. $contents = 'mystring1,mystring2';
>>
>>What's the proper way to do this?  Can it be done?  (Note that I do  
>>not know how many elements will be in $contents ahead of time, so  
>>something like IN (:contents1, :contents2) wouldn't make sense.)
>>
>>Thanks for any help!
>>
>>- TK
>
>
>$contents = array('string1', 'string2', 'string3');
>$ins = implode (',', $contents);
>$sql = "SELECT * FROM `table` WHERE `field` IN ($ins)";
>
>I'm not sure if the IN function only works on numeric values or if it  
>also works on strings as well. If contents contains strings, you may  
>need to put single quotes around each item. If so, change the above  
>to.....
>
>$ins = "'" . implode ("','", $contents) . "'";
>
>Hope that helps,
>
>~Philip


Thanks.  That's how to use the IN function in the first place, which I already know.  What I was asking about was how to do this using PDO and prepared statements.  It's the PDO prepared statement functionality that's got me stuck.  The issue is that I can't figure out how to bindParam or bindValue in this situation, where there is potentially a list of values (of arbitrary size).

- TK 


-- 
PHP Database Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php


[Index of Archives]     [PHP Home]     [PHP Users]     [Postgresql Discussion]     [Kernel Newbies]     [Postgresql]     [Yosemite News]

  Powered by Linux