As you already know, you will dynamically create the $contents.
See if you can dynamically create the entire prepare statement which
includes the $contents, as well as dynamically create the bindValue
statement; then see if you can "eval" those dynamically created statements.
$commandPrepare = '$stmt = $pdo->prepare(\'
select *
from mytable
where myfield IN ('.$dynamicallyCreatedContents.')\'
);';
eval($commandPrepare);
$commandBind = '$stmt->bindValue... {escape quotes as needed -- I haven't
tested it}
eval($commandBind);
$stmt->execute();
On Tue, Jul 8, 2008 at 11:55 AM, TK <[EMAIL PROTECTED]> 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
>
>
> --
> PHP Database Mailing List (http://www.php.net/)
> To unsubscribe, visit: http://www.php.net/unsub.php
>
>