如何使用原始查询 mysql yii 绑定参数

Ahs*_*din -2 php mysql sql yii

我正在使用原始文本查询来生成结果。但是为了避免 sql 注入,它希望对传入 userStat() 函数的变量(即 $from 和 $to)进行参数化查询。

puclic function userStat($from, $to){
     $sql = "select u.user_id as ID, u.email as Email
            from User u
            where u.type = 'x'
            and u.join_date BETWEEN '$from'  AND '$to'";

    $rawData = Yii::app()->db->createCommand($sql);
    return $userData  = new CSqlDataProvider($rawData, array(
                'keyField'=>'ID',
            ));
}
Run Code Online (Sandbox Code Playgroud)

现在我想用文本查询($sql)绑定 $from 和 $to。

请帮我弄清楚这一点。

MH2*_*2K9 6

你可以使用bindParam然后queryAll()。像下面这样的东西。

$sql = "select u.user_id as ID, u.email as Email
        from User u
        where u.type = 'x'
        and u.join_date BETWEEN :start  AND :end";
$rawData = Yii::app()->db->createCommand($sql);
$rawData->bindParam(":start", $from, PDO::PARAM_STR);
$rawData->bindParam(":end", $to, PDO::PARAM_STR);
$data = $rawData->queryAll();
Run Code Online (Sandbox Code Playgroud)

有关详细信息bindParam。我认为它会解决你的问题。