Reputation: 157
I assume that :parent_id
evaluates to a number. But, how exactly does this piece of code work? When should I use this syntax (:name
)?
$data = Location::model()->findAll('parent_id=:parent_id',array(
':parent_id' => (int) $_POST['Current-Controller']['country_id']
));
Upvotes: 2
Views: 3162
Reputation: 437554
The colon doesn't have any special meaning. The pattern :parent_id
as a whole does, but that's only because you chose to use it as a variable name in the WHERE
condition (parent_id=:parent_id
).
You could just as well have chosen to write
$data=Location::model()->findAll('parent_id=the_quick_brown_fox',
array('the_quick_brown_fox'=>(int) $_POST['Current-Controller']['country_id']));
In practice the colon is used because there's the risk of the name you choose for the variable also being present as a legitimate part of the condition, in which case all instances of it will be replaced with the value and results will be unexpected.
For example, this:
$data=Location::model()->findAll('parent_id=parent_id',
array('parent_id'=> 1 /*anything, really*/));
would result in the condition 1=1
, which would match all records.
Upvotes: 8