yii CDbCommand查询参数中使用的冒号是什么?

时间:2015-06-23 05:46:30

标签: php yii

我们知道我们可以使用像

这样的CDbCommand在yii中构建查询
where('id=:id1 or id=:id2', array(':id1'=>1, ':id2'=>2))

我在第91页的 yii-guide-1.1.15 中找到了这个。

事实上,以下风格也适用:

where('id=:id1 or id=:id2', array('id1'=>1, 'id2'=>2))

有人可以说出区别吗?非常感谢!

2 个答案:

答案 0 :(得分:0)

在参数名称之前应用前导冒号是安全的,因为它是必需的,但是如果你会错过这个前导冒号,那么PHP会在参数名称前面附加冒号。

这是最佳方式

where('id=:id1 or id=:id2', array(':id1'=>1, ':id2'=>2))

由于

答案 1 :(得分:0)

为了避免SQL injection attacks并提高执行重复使用的SQL语句的性能,可以“准备”#34;带有可选参数占位符的SQL语句,在参数绑定过程中将替换为实际参数。

参数占位符可以是命名(表示为唯一令牌),也可以是未命名(表示为问号)。调用CDbCommand::bindParam()或CDbCommand :: bindValue()将这些占位符替换为实际参数。不需要引用参数:底层数据库驱动程序为您执行此操作。必须在执行SQL语句之前完成参数绑定。