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 ("'blue蝶翼', 'blue dartwing', 'blue mountain flower'"),所以它当然行不通。

于 2012-04-19T04:25:02.910 回答