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()
子句中。