2014-05-07 5 views
0

J'ai un contenu que je veux filtrer par un nom de marque et un ID d'autorisation, puis le montrer.Codeigniter. Où SQL avec plusieurs valeurs

mon problème est: Lorsque j'envoie une valeur en $ autorisation, cela fonctionne très bien. Mais quand un utilisateur a plusieurs permissions_id, ça ne marche pas.

O WH permission_id = 1, 2, 3;

J'ai un problème avec ma requête de sélection:

Codeigniter:

$this->db->select('*'); 
$this->db->from('content'); 
$this->db->where('brand_name', $brand); 
$this->db->where('permission_id', $permission); 

SQL:

SELECT * FROM `content` WHERE `brand_name` = $brand_name AND `permission_id` = $permission; 

La print_r de la marque $ & $ look permission comme ceci:

Hyundai 
1,10,11,2,3,4,5,6,7,8,9 

J'espère que j'ai donné assez d'informations pour que quelqu'un m'aide comme ça.

merci.

Répondre

3

Pour tester un champ contre plusieurs valeurs, votre SQL ne doit pas ressembler à:

WHERE permission_id = 1, 2, 3; 

Je ne sais pas ce que votre champ permission_id ressemble, mais je suppose que votre état devrait plutôt être:

WHERE permission_id IN (1, 2, 3); 

Essayez avec where_in:

$this->db->where_in('permission_id', $permission); 

$permission est un tableau contenant les autorisations (pas une chaîne séparée par des virgules).

Avec $permission étant une chaîne, utilisez explode:

$this->db->where_in('permission_id', explode(',', $permission)); 
+0

Merci beaucoup pour l'aide. Ça fonctionne maintenant! – mrijneveld

Questions connexes