Как я могу использовать IN-оператор для связанных запросов в Codeigniter

«Я адаптирую некоторые из моих запросов для предотвращения внедрения 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"

Я действительно не вижу, что я делаю неправильно. Какие-либо предложения?

3

Решение

Ты можешь использовать в которой как

$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');
3

Другие решения

Я думаю, что вы потеряли () в заявлении, поэтому попробуйте использовать IN (?).

Я думаю, что ответ на этот вопрос:

CodeIgniter — привязка запроса "В" параметр

0

По вопросам рекламы [email protected]