«Я адаптирую некоторые из моих запросов для предотвращения внедрения SQL, переписав их с привязанными параметрами. Это достаточно просто для простых запросов:
например
// Old code
$sql = "SELECT * FROM some_table WHERE id = 4 AND author = 'Bob'";
$this->db->query($sql);
// New Bound SQL query
$sql = "SELECT * FROM some_table WHERE id = ? AND author = ?";
$this->db->query($sql, array(4, 'Bob'));
У меня возникли проблемы при получении этого работать на запросы, используя оператор IN. Как предложено Вот Я пробовал следующее:
// Old code
$sql = "SELECT * FROM some_table WHERE id = 7 AND author IN ('Bob','Geoff)";
$this->db->query($sql);
// New Bound SQL query
$sql = "SELECT * FROM some_table WHERE id = ? AND author IN ?";
$this->db->query($sql, array(7, array('Bob','Geoff')));
Однако этот запрос не выполняется с сообщением об ошибке:
«У вас есть ошибка в вашем синтаксисе SQL; проверьте руководство, которое
соответствует версии вашего сервера MySQL для правильного использования синтаксиса
рядом с «Массив» в строке 6 «
Кажется, запрос меняется на:
"SELECT * FROM some_table WHERE id = '5' AND author IN Array"
Я действительно не вижу, что я делаю неправильно. Какие-либо предложения?
Ты можешь использовать в которой как
$array = array('Bob', 'Geoff');
$this->db->select('*');
$this->db->where('id', 7);
$this->db->where_in('author', $array);//WHERE author IN ('Bob', 'Geoff')
$this->db->get('some_table');
Я думаю, что вы потеряли () в заявлении, поэтому попробуйте использовать IN (?).
Я думаю, что ответ на этот вопрос: