Yii2 mysql_real_escape_string

时间:2017-05-25 14:48:20

标签: php yii2

以下是我的代码:

<?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])但是我在这里如何传递这样的参数?

2 个答案:

答案 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());