以下是我的代码:
<?php
$sql2 = "Select * from table ";
for($i=0;$i<count($val);$i++){
$sql2.=" where(column1 LIKE '%".$val[$i]."%' OR "
. "column2 LIKE '%".$val[$i]."%' OR "
. "column3 LIKE '%".$val[$i]."%' OR "
. "column4 LIKE '%".$val[$i]."%' OR "
. "column5 LIKE '%".$val[$i]."%' OR "
. "column6 LIKE '%".$val[$i]."%' OR "
. "column7 LIKE '%".$val[$i]."%') ";
}
现在如何在这里添加mysql_real_escape_string?
选项就像 - >&gt; where('status =:status',[':status'=&gt; $ status])但是我在这里如何传递这样的参数?
答案 0 :(得分:1)
您可以在yii2中使用conda install -c r r=3.3.2
执行以下操作。您必须在标题中添加查询。
Query
答案 1 :(得分:1)
首先,不推荐使用 mysql _ 扩展名,Yii不使用它。 您需要转义查询参数。
解决方案,基于您的问题:
$query = new \yii\db\Query();
$query
->from('table')
->andFilterWhere([
'OR',
['LIKE', 'column1', $val[0]],
['LIKE', 'column2', $val[1]],
['LIKE', 'column3', $val[2]],
['LIKE', 'column4', $val[3]],
['LIKE', 'column5', $val[4]],
['LIKE', 'column6', $val[5]],
['LIKE', 'column7', $val[6]]
]);
我认为你需要这个:
$val = range(1,10);
$query = new \yii\db\Query();
$query->from('table');
foreach ($val as $v) {
$query
->orFilterWhere([
'OR',
['LIKE', 'column1', $v],
['LIKE', 'column2', $v],
['LIKE', 'column3', $v],
['LIKE', 'column4', $v],
['LIKE', 'column5', $v],
['LIKE', 'column6', $v],
['LIKE', 'column7', $v],
]);
}
其他信息:
$cc = $query->createCommand();
// debug query
var_dump($cc->rawSql); // returns SQL query with the substituted parameters
var_dump($cc->sql); // returns SQL query with placeholders
var_dump($cc->params); // returns the placeholders
// run query
var_dump($cc->queryAll());