Как работает двоеточие (:) перед именем переменной в кавычках?

Вопрос:Я предполагаю, что :parent_id оценивает число. Но как именно эта часть кода работает? Когда я должен использовать этот синтаксис (:name)? $data = Location::model()->findAll('parent_id=:parent_id',array( ':parent_id' => (int) $_POST['Current-Controller']['country_id'] )); Лучший ответ: Двоеточие не имеет особого значения. Шаблон :parent_id в целом работает, но это только потому, что вы решили использовать его как имя переменной в WHERE (parent_id=:parent_id).

Вопрос:

Я предполагаю, что :parent_id оценивает число. Но как именно эта часть кода работает? Когда я должен использовать этот синтаксис (:name)?

$data = Location::model()->findAll(‘parent_id=:parent_id’,array( ‘:parent_id’ => (int) $_POST[‘Current-Controller’][‘country_id’] )); Лучший ответ:

Двоеточие не имеет особого значения. Шаблон :parent_id в целом работает, но это только потому, что вы решили использовать его как имя переменной в WHERE (parent_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, которое будет соответствовать всем записям.

Оцените статью
Добавить комментарий