说,我将遵循避免sql注入的良好做法。所以这不好:
$query="SELECT id,tag FROM tbl_tags WHERE tag LIKE '%".$tag."%' ORDER BY creation_time DESC LIMIT 0,10 ";
我必须使用参数绑定:
$query="SELECT id,tag FROM tbl_tags WHERE tag LIKE :tag ORDER BY creation_time DESC LIMIT 0,10 ";
$command =Yii::app()->db->createCommand($query);
$command->bindParam(":tag", "%{$tag}%", PDO::PARAM_STR);
$models = $command->queryAll();
但是这会产生:致命错误:无法通过引用传递参数2
如何绑定这个面向LIKE的参数?
答案 0 :(得分:2)
尝试使用查询构建器。因此,您的查询将如下所示:
Yii::app()->db->createCommand()
->select('id, tag')
->from('tbl_tags')
->where('tag like :tag', array(':tag' => "%{$tag}%"))
->order('creation_time desc')
->limit('0, 10')
->queryAll()
如果你正在寻找一个好的练习,那就更好了。
P.S。:从iPhone回复,原谅错别字。
答案 1 :(得分:0)
通过阅读此功能的手册页或通过Google搜索错误消息。
两者都会告诉你必须使用bindValue()。