0

私は PDO と準備済みステートメントが初めてです。なぜこれが機能するのですか:

$sth = $dbh->prepare("SELECT * 
                      FROM skyrim_ingredients 
                      WHERE ing_name 
                      IN ('blue butterfly wing', 'blue dartwing', 'blue mountain flower');");
while($row = $sth->fetch()) {
    echo $row['ing_id'];
}

...しかし、これはそうではありません:

$ing_string = 'blue butterfly wing', 'blue dartwing', 'blue mountain flower';
$sth = $dbh->prepare("SELECT * 
                      FROM skyrim_ingredients 
                      WHERE ing_name 
                      IN (?);");
$sth->bindParam(1, $ing_string);
$sth->execute();
while($row = $sth->fetch()) {
    echo $row['ing_id'];
}

テーブルまたは列にパラメーターを使用できないと読みましたが、これは IN 句にも当てはまりますか?

4

1 に答える 1

1

? を使用したパラメータ置換 変数展開と同じではありません。これは、機能しない場合に期待しているように見えます。データベースに到達する実際の SQL は ... IN ("'青い蝶の羽'、'青いダーツウィング'、'青い山の花'") のようになる可能性があるため、もちろん機能しません。

于 2012-04-19T04:25:02.910 に答える