Я попытаюсь выполнить запрос ниже, но не уверен, что это предотвратит внедрение SQL-кода?Yii2: Можно ли связать массив с условием IN() в соединении?
$status = [1, 2, 3];
$param = implode(', ', $status);
$rows = (new \yii\db\Query())
->select('*')
->from('user')
->leftJoin('post', "post.user_id = user.id AND post.some_column = $value AND post.status IN ($param)");
->all();
возвращение ожидаемые результаты, но могут быть происходят SQL-инъекции. Мой IN состояние выглядеть это
IN (1, 2, 3)
$rows = (new \yii\db\Query())
->select('*')
->from('user')
->leftJoin('post', "post.user_id = user.id AND post.some_column = :sid AND post.status IN (:param)", [':param' => $param, ':sid' => $value]);
->all();
сравнивать только первый элемент массива, так как это выглядеть следующим образом
IN ('1, 2, 3')
его состоит одна строка не проверяет второй элемент массива работает только на первый элемент.
Я ссылаюсь на ссылку ниже, но не знаю, как реализовать это условие.
Can I bind an array to an IN() condition?
Пожалуйста, дайте решение о том, как использовать IN() Condition
в On
часть присоединиться (PDO/Yii2/MySQL).
Хорошо, я удалил мой ответ, потому что 'where' условия дифф из 'on', и вам нужны условия' on'. Кстати, я открываю этот вопрос, возможно, вас интересует: https://github.com/yiisoft/yii2/issues/11827 – slinstj