gpt4 book ai didi

sql - 无法将参数绑定(bind)到 CDbCommand

转载 作者:搜寻专家 更新时间:2023-10-30 20:28:54 24 4
gpt4 key购买 nike

说,我将遵循避免 sql 注入(inject)的良好做法。所以这不好:

      $query="SELECT id,tag  FROM tbl_tags WHERE tag LIKE '%".$tag."%' ORDER BY creation_time DESC LIMIT 0,10 ";

相反,我必须使用参数绑定(bind):

     $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();

但这会产生: fatal error :无法通过引用传递参数 2

如何绑定(bind)这个面向 LIKE 的参数?

最佳答案

尝试使用查询生成器。所以您的查询将如下所示:

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 回复,请原谅打字错误。

关于sql - 无法将参数绑定(bind)到 CDbCommand,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16727153/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com