2012-12-05 14 views
26

Mam tabeli w mojej bazy danych z adminId i ClientIDPrzełęcz tablica, gdzie w CodeIgniter Active Record

Nie może być 20 rekordów z adminId od zalogowanego użytkownika i próbuję ciągnąć listę klientów .

Zastanawiam się, czy istnieje sposób mogę powiedzieć coś takiego:

$this->db->where('id', '20 || 15 || 22 || 46 || 86'); 

Próbuję to zrobić z dynamicznymi danymi (nigdy nie wiadomo, ilu klientów identyfikatorów trzeba ciągnąć) . Jakieś pomysły?

Odpowiedz

53
$this->db->where_in('id', array('20','15','22','42','86')); 

Numer referencyjny: where_in

+0

Jak mogę to zrobić z tablicą dla wielu warunków? Mam foreach pętli jak foreach ($ filter jako $ column => $ value) {$ query = $ query-> where_in ($ column, $ value);} Ale to nie jest wstawianie cudzysłowów i tworzenie błędnego zapytania. Jak mogę to poprawić –

+0

@HappyCoder: musisz scalić tablice i przekazać do where_in: Dla np .: $ one_array = array (10,20); $ two_array = array (30,40); $ final_array = array_merge ($ one_array, $ two_array); $ this-> db-> where_in ('id', $ final_array); – joHN

12

Zastosowanie where_in()

$ids = array('20', '15', '22', '46', '86'); 
$this->db->where_in('id', $ids); 
8

z aktywnego docs rekord:

$this->db->where_in(); 

generuje gdy pole IN ('element', 'element') zapytań SQL połączone z I ewentualnie

$names = array('Frank', 'Todd', 'James'); 
$this->db->where_in('username', $names); 
// Produces: WHERE username IN ('Frank', 'Todd', 'James') 
+0

Przykro mi, masz rację, że jest tam w dokumentach. Otworzyłem je i myślę, że przeszmuglowałem to. Dzięki za pomoc. –

0

Generuje gdy pole IN ('element', 'element') zapytań SQL połączone z I jeśli to właściwe,

$this->db->where_in() 
ex : $this->db->where_in('id', array('1','2','3')); 

Generuje gdy pole IN ('artykuł', 'element') Zapytanie SQL połączone z LUB, jeśli to konieczne,

$this->db->or_where_in() 
ex : $this->db->where_in('id', array('1','2','3')); 
Powiązane problemy