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

Php yii CDbCommand查询参数中冒号的用途是什么?,php,yii,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)) 谁能告诉我有什么不同吗?非常感谢 在参数名之前应用前导冒号是安全的,因为它是必需的,但是如果

我们知道我们可以使用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))

谁能告诉我有什么不同吗?非常感谢

在参数名之前应用前导冒号是安全的,因为它是必需的,但是如果您错过了这个前导冒号,那么PHP会在参数名之前在内部追加冒号

所以最好的办法就是这样

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

为了避免和提高重复执行SQL语句的性能,可以使用可选的参数占位符“准备”SQL语句,这些占位符将在参数绑定过程中替换为实际参数


参数占位符可以是命名的(表示为唯一标记)或未命名的(表示为问号)。调用或CDbCommand::bindValue()以用实际参数替换这些占位符。这些参数不需要被引用:底层数据库驱动程序会为您提供这些参数。参数绑定必须在SQL语句执行之前完成。

没有区别,发送值时,您可以使用
或不使用
非常感谢您,您是第一个给我答案的人。:-)谢谢,这正是我想要的答案。我刚刚和我的一位团队成员就这个问题进行了争论。因此,参考文档通常是有帮助的,而不是盲目地认为“似乎工作得很好”。我想点击向上箭头来找到这个答案,因为我还没有这个名声。对不起~