Как искать 2 значения в одном поле с codeigniter? - PullRequest
0 голосов
/ 04 марта 2019

У меня есть поле базы данных, содержащее идентификаторы ключевых слов ["1", "2", "3", "4", "5", "6"], и я хочу найти несколько из этих идентификаторов в одном поле.

Вот идея того, чего я хотел бы достичь:

$tags[] = "\"1\"";

$tags[] = "\"2\"";

$query = $this->db->like(array('ids_keywords' => $tags[0], 'ids_keywords' => $tags[1]));

Проблема здесь в том, что codeigniter выполняет только последний запрос вместо обоих, поскольку поле поиска одинаково.

Как лучше всего это сделать?

Ответы [ 2 ]

0 голосов
/ 04 марта 2019

Вы можете написать свои собственные предложения:

$where = "ids_keywords='1' AND ids_keywords='2' OR ids_keywords='3'";

$this->db->where($where);

Для безопасного запроса используйте знак вопроса (?)

$sql = "SELECT * FROM some_table WHERE ids_keywords = ? AND ids_keywords = ? AND ids_keywords = ?";
   $this->db->query($sql, array(1, 2, 3));

В приведенном выше примере знак вопроса (?) Будетзаменяется массивом во втором параметре функции query ().Основным преимуществом построения запроса таким образом является то, что значения автоматически экранируются, что создает безопасные запросы.Движок CodeIgniter делает это автоматически.

0 голосов
/ 04 марта 2019

попробуйте следующее

$arrTags = [1,2];
$this->db->group_start()
foreach($arrTags AS $strTag)
{
    $this->db->like(ids_keywords, '"'.$strTag.'"');

}
$this->db->group_end();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...