2

我假设:parent_id评估为一个数字。但是,这段代码究竟是如何工作的?我什么时候应该使用这种语法 ( :name)?

$data = Location::model()->findAll('parent_id=:parent_id',array(
                ':parent_id' => (int) $_POST['Current-Controller']['country_id']
        ));
4

1 回答 1

8

冒号没有任何特殊含义。整个模式确实如此,但这只是因为您选择在条件 ( ):parent_id中将其用作变量名。WHEREparent_id=:parent_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匹配所有记录。

于 2012-06-02T18:48:37.507 回答