我正在使用Yii 1.1.15并且正在为我的数据提供者添加一个标准
$search_condition[] = 'd.test IN (:pTEST)';
$search_params[':pTEST'] = $_GET[$key];
$dataProvider=new CActiveDataProvider('MODELNAME',
array(
'criteria' => array(
'condition'=>$_search_conditions,
'params'=>$search_params,
),
));
生成的查询是
SELECT COUNT(*) FROM `TABLE` `s`
WHERE (s.id IN (:pTEST)). Bound with :pTEST='6,50'
当我调用此函数$dataProvider->getTotalItemCount());
但是当我改变我的参数时。它有效。
$search_condition[] = 'd.test IN ('.$_GET[$key].')';
这不会受到mysql注入的攻击吗?如果是这样,我如何使用yii的参数?或者我应该添加mysql_real_escape_string
?就个人而言,如果可能,我宁愿使用Yii的约束。
答案 0 :(得分:0)
您在yii中有一个CDBCriteria类可以帮助您构建查询
$values = explode(",",$_GET[$key])
$criteria = new CDBCriteria();
$criteria->addInCondition('test',$values)
$dataProvider=new CActiveDataProvider('MODELNAME',
array(
'criteria' => $criteria,
));
这将为您提供所需的输出