Php 如何使用不带引号的数组into IN子句?

Php 如何使用不带引号的数组into IN子句?,php,mysql,pdo,parameter-passing,Php,Mysql,Pdo,Parameter Passing,这是我的密码: $arr = [val1, val2, val3]; $str = join("','",$arr); //=> val1','val2','val3 $stm = $dbh->prepare("SELECT * FROM mytable WHERE mycol NOT IN ('$str')"); $stm->execute(); 上面的代码也可以工作。现在我想将该变量传递给查询,而不是直接将其用于查询。大概是这样的: $arr = [val1, val2,

这是我的密码:

$arr = [val1, val2, val3];
$str = join("','",$arr); //=> val1','val2','val3
$stm = $dbh->prepare("SELECT * FROM mytable WHERE mycol NOT IN ('$str')");
$stm->execute();
上面的代码也可以工作。现在我想将该变量传递给查询,而不是直接将其用于查询。大概是这样的:

$arr = [val1, val2, val3];
$str = join("','",$arr); //=> val1','val2','val3
$stm = $dbh->prepare("SELECT * FROM mytable WHERE mycol NOT IN (':str')");
$stm->execute(array('str' => $str));
但它不起作用。有语法错误(我很确定问题是关于引号的问题)


注意:有时
$str
为空


不管怎样,我该如何处理引号呢?

@chris85老实说,我不明白你的意思。但是,
$str
的值将由
连接(“,”,$vals)
不在(':str')
创建,它必须
不在(:str,:str1,:str2)
然后将
$str
作为一个数组,您可以将其绑定。。。匿名占位符会更容易,
不在(?,,?)
然后
$stm->execute($str)
如果你能把它做成一个数组。@chris85实现你所说的并不容易。。它需要大量的代码。如果将其作为一个数组,为什么需要使用
连接
?保持原样。@chris85我需要为该数组创建一个字符串,以将其用于
IN()
子句中。