Добавление подстроки в CodeIgniter Where

0

Можно ли добавить подстроку в активном запросе?

У меня есть этот пример, который работает, когда я пишу его в чистом sql. Однако, когда я пишу его в активном запросе в CI, результаты не отображаются. Мне было интересно, может ли кто-нибудь помочь проверить, правильно ли это.

        $this->db->distinct();
        $this->db->select('user_table.id','user_table.first_name','user_table.last_name','user_table.email','user_table.created_on');
        $this->db->from($this->user_table);
        $this->db->join($this->account_items_table,'user_accounts.id = account_items.user_id','LEFT');
        $this->db->where('SUBSTRING(account_items.key,1,2)',$input);
Теги:
codeigniter

2 ответа

0

Это отлично работает для меня:

$this->db->where('SUBSTRING(title, 1, 1)=','H');
$query = $this->db->get('news');
print $this->db->last_query();

Единственное отличие, которое я вижу, это включить оператор =.

Как вы можете видеть, это возвращает статью с именем "Hello": https://mi-linux.wlv.ac.uk/~in9352/codeigniter3/

И оператор SQL: SELECT * FROM news WHERE SUBSTRING (название, 1, 1) = 'H'

Как и предполагалось, вы должны использовать

print $this->db->last_query();

Чтобы узнать, что такое ваш SQL... Это позволило определить оператор missing = в моем случае... отладка всегда полезна!

0

Вероятно, CI добавляет обратные элементы вокруг вашего выражения, передавая третий аргумент как false в where()

$this->db->where('SUBSTRING(account_items.key,1,2)',$input,false);
  • 0
    Я попробовал это, и результаты все еще не появлялись
  • 1
    @JianYA что получится, когда вы запустите echo $this->db->last_query(); после выполнения построителя запросов активной записи?
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню