i-programmer писал(а): ↑2020.10.15, 15:53
Код: Выделить всё
User::find()->where(['user_id' => $userId])
Происходит ли тут автоматический разбор условия и привязка подготовленных переменных?
происходит.
подробности - покопайтесь в реализации в QueryBuilder
i-programmer писал(а): ↑2020.10.15, 15:53
И есть код
Происходит ли тут какой-то разбор условия и привязка подготовленных переменных?
а тут да, может быть плохо:
Не встраивайте переменные непосредственно в условие, особенно если значение переменной получено от пользователя, потому что это делает ваше приложение подверженным атакам через SQL инъекции.
https://www.yiiframework.com/doc/guide/ ... ry-builder
При использовании привязки параметров, вы можете вызывать params() или addParams() для раздельного указания параметров.
$query->where('status=:status')
->addParams([':status' => $status]);
А конструкция User::find()->where(['user_id' => $userId] собственно это и делает внутри QueryBuilder
Общее правило - старайтесь обрабатывать полученные извне данные, ограничивать типами, и т.п.
Обычно достаточно использовать средства фреймворка, и избегать всяких $_SERVER['QUERY_STRING'], то есть низкорувневой обработки HTTP запросов. Бывает она нужна, тогда предельное внимание!
Внутри там обычно все делается.
Когда возникают сомнения - смотрите в код фреймворка.
Не желайте странного, и не будет у вас головной боли чтобы достичь этого странного.
Тем более что окажется что оно вам и не нужно было, странное это.