Php 引号中变量名前面的冒号(:)是如何工作的?
我假设Php 引号中变量名前面的冒号(:)是如何工作的?,php,yii,Php,Yii,我假设:parent_id的计算结果是一个数字。但是,这段代码到底是如何工作的呢?什么时候应该使用此语法(:name) 冒号没有任何特殊意义。模式:parent\u id作为一个整体是这样的,但这只是因为您选择在WHERE条件(parent\u id=:parent\u id)中将其用作变量名 你也可以选择写作 $data=Location::model()->findAll('parent_id=the_quick_brown_fox', array('the_quick_br
:parent_id
的计算结果是一个数字。但是,这段代码到底是如何工作的呢?什么时候应该使用此语法(:name
)
冒号没有任何特殊意义。模式
:parent\u id
作为一个整体是这样的,但这只是因为您选择在WHERE
条件(parent\u id=:parent\u id
)中将其用作变量名
你也可以选择写作
$data=Location::model()->findAll('parent_id=the_quick_brown_fox',
array('the_quick_brown_fox'=>(int) $_POST['Current-Controller']['country_id']));
实际上,使用冒号是因为您为变量选择的名称也可能作为条件的合法部分出现,在这种情况下,它的所有实例都将替换为该值,结果将是意外的
例如,这:
$data=Location::model()->findAll('parent_id=parent_id',
array('parent_id'=> 1 /*anything, really*/));
将导致条件
1=1
,这将匹配所有记录。我不确定是否遵循。只是一根绳子吗?如果parent_id为2,那么:parent_id是否在引号中计算为2?它在html中不是这样显示的。我看到另一个例子,例如$length被传递到函数中,然后作者在函数中使用了:length。@user1417526:否,替换是在之后执行的(在处理数据库查询时)。谢谢您的帮助。非常感谢@乔恩,有没有可以省略冒号的证据?
$data=Location::model()->findAll('parent_id=parent_id',
array('parent_id'=> 1 /*anything, really*/));