我对pdo语句和yii2查询有一些问题/疑问。我在这里搜索并阅读了一些问题,但没有找到解决方法。所以我有一个这样的数组
array (size=3)
0 => string '12345'
1 => string '6789'
2 => string '101258'
从这个数组中,我创建了一个字符串,插入到我的inconditionforsql查询中
//$split_var is the previous array
$var_query = implode( "','" , $split_var);
//'12345','6789','101258' i obtained this string
所以现在我尝试这样创建一个查询
$tupla = Yii::$app->db->createCommand("
SELECT * FROM oln, opt WHERE opt_cod = oln_opt_cod AND oln_cod IN ( :var_query) order by oln_cod ASC
")
->bindValue(':var_query' ,$var_query);
$result = $tupla->queryAll();
它没有给我任何错误,但结果查询不是我所期望的。事实上,我会得到这个问题:
SELECT * FROM oln, opt WHERE opt_cod = oln_opt_cod AND oln_cod IN ( '01Y0BIAN'',''05C2LARG'',''0661NO00') order by oln_cod ASC
问题是在条件,我不知道为什么它增加了另一个 '
.
我也尝试过这种方法,但我不知道如何以这种方式绑定参数:
$query = (new \yii\db\Query())
->select('*')
->from('oln, opt')
->where('opt_cod = oln_opt_cod')
->andwhere('in', 'oln_cod',[':oln_cod' => $var_query])
->addParams([':oln_cod' => $var_query])
->orderBy('oln_cod ASC')
->all();
1条答案
按热度按时间8ehkhllq1#
另一个
'
由于转义而添加。自$var_query
实际上是一个字符串,它将被视为单个字符串值'
将被转义以防止sql注入。你在建立你的IN
条件错误时,应将每个id绑定到IN
单独:使用foreach绑定所有参数可能更容易。使用yii Package 器也简单得多,它有很好的构建快捷方式
IN
条件: