2015-06-23 3 views
2

Мы знаем, что мы можем построить запрос в Yii, используя CDbCommand какЧто такое двоеточие, используемое в параметрах запроса yb CDbCommand?

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

Я нахожу это в юй-гид-1.1.15 на странице 91.

Хотя на самом деле, следующий стиль будет также работа:

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

Может кто-нибудь сказать, в чем разница? Большое спасибо!

+0

Не имеет значения, вы можете использовать с ':' или без ':', когда вы отправляете значения –

ответ

0

Безопасно применять Ведущий двоеточие перед именем параметра, потому что это необходимо, но если вы пропустите этот главный двоеточие, тогда PHP внутренне добавит двоеточие до имени параметра.

Так лучший способ это

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

Благодаря

+0

Большое вам спасибо, и вы первый, кто дал мне ответ. :-) – NeoSoNg

0

Чтобы избежать SQL injection attacks и для повышения производительности при выполнении повторно используемых операторов SQL, можно «подготовить» оператор SQL с дополнительными заполнителей параметров, которые должны заменяются фактическими параметрами во время процесса привязки параметров.

Заполнители параметров могут быть либо названы (представлены как уникальные маркеры), либо неназванные (представлены как вопросительные знаки). Вызовите CDbCommand::bindParam() или CDbCommand :: bindValue(), чтобы заменить эти заполнители фактическими параметрами. Параметры не обязательно должны указываться: базовый драйвер базы данных делает это за вас. Связывание параметров должно выполняться до выполнения оператора SQL.

+0

Спасибо и это именно тот ответ, который я хотел. Я просто спорил с одним из членов моей команды об этом. И поэтому обычно полезно ссылаться на документы, отличные от кодирования, вслепую, думая, что «кажется, работает хорошо». Я хотел бы нажать стрелку вверх для этого ответа, у меня нет репутация пока. – NeoSoNg