2010-02-15 6 views
0

J'ai besoin d'aide pour résoudre un problème avec mySQL, est-il possible de passer un tableau à une fonction puis d'exécuter une correspondance entre les valeurs du tableau?Aide avec la clause de requête MySQL dans CodeIgniter

J'ai cette requête

function getMenu($cookieId) { 
    $this->db->select('*'); 
    $this->db->from('categoryTable'); 
    $this->db->join('userMenuTable', 'categoryTable.categoryId = userMenuTable.categoryId', 'left'); 
    $this->db->where('userMenuTable.cookieId', $cookieId); 

    $query = $this->db->get(); 
    return $query->result_array(); 

} 

L'utilisation du tableau $query qui est retourné est possible d'interroger la base de données et d'obtenir toutes les valeurs d'une table qui ne correspond pas aux valeurs du tableau?

+0

Pouvez-vous poster le contenu de 'query' de $? Je n'ai pas utilisé CI moi-même, mais comprendre comment le tableau est retourné aiderait à répondre à la façon dont vous pouvez appeler la requête. –

Répondre

1

Utilisez cette condition dans votre requête:

$this->db->where_not_in('fieldname', $array_of_values); 

Vous ne pourrez pas utiliser directement le tableau retourné dans votre exemple, car il vient d'un SELECT * et donc il contient tous les champs de la table. Vous devez construire un tableau avec UNIQUEMENT les valeurs du champ sur lequel vous voulez filtrer la requête suivante.

0

Quelles colonnes avez-vous dans ce tableau? Théoriquement, vous pourriez faire un

select from `new table` where `field` NOT IN (Select `field` from `old_table`) 

de le faire en une seule requête, ou passer votre tableau l'état NOT IN