0

以下を含む mysql_query ステートメントを PDO に変換しようとしています。

$string = '2, 3, 4, 5, 7, 8';


mysql_query(" ... IN($string) ...");

これはmysql_queryステートメントでは正常に機能しますが、PDO の準備と実行では機能しません (結果は返されません)。

ここで何が欠けていますか?

4

3 に答える 3

1

クエリ sql が で正常に動作する場合、mysql_querypdo でも正常に動作します。

うまくいかないのは、文字列全体を 1 つのプレースホルダーだけにバインドした場合です。IN句の値ごとにバインドする必要があります。

例:

$string = '2, 3, 4, 5, 7, 8';
$params = explode(', ', $string);
$sth = $pdo->prepare(' ... IN('.join(',', array_fill(0, count($params), '?')).') ...');
$ret = $sth->execute($params);
于 2012-07-10T01:58:50.113 に答える
1

MySQL IN ステートメントの PDO バインディング値または配列を IN() 条件にバインドできますか? のいずれかを参照してください。.

複数の値を単一の名前付きパラメーターにバインドできないため、これがあなたが探しているソリューションだと思います。

于 2012-07-10T01:59:09.970 に答える
0

「たとえば、SQL ステートメントの IN() 句で、複数の値を単一の名前付きパラメーターにバインドすることはできません。」

http://php.net/manual/en/pdo.prepare.php

これは、準備されたステートメントの目的全体に反します。

于 2012-07-10T01:54:53.230 に答える