Ich benutze Codeigniter und versuche, eine kommagetrennte Liste von meinem Controller an das Modell zu übergeben, um es in einer where_not_in
Abfrage zu verwenden. Ich habe den folgenden Code, um die durch Kommas getrennte Liste zu erstellen.Durch Komma getrennte Liste vom Controller zum Modell
die produziert die folgenden: Alcatel, Apple, Huawei, LG, Microsoft, Motorola, Nokia, Samsung, Sony. Meine Frage ist diese:
$this->db->select('name');
$this->db->from('wl_manufacturers');
$this->db->where('active', 1);
$this->db->where('supplier_type', 'product');
$this->db->where_not_in('name', $str);
$ str wobei die durch Kommata getrennte Liste
die Ausgabe von Profiler ist:
SELECT `name`
FROM `wl_manufacturers`
WHERE `active` = 1
AND `supplier_type` = 'product'
AND `name` NOT IN('Alcatel,Apple,Huawei,LG,Microsoft,Motorola,Nokia,Samsung,Sony')
Dies scheint nicht zu arbeiten, weil es keine einfachen Anführungszeichen ist um jedes Element in der Liste. Aber wenn ich die Liste manuell wie folgt erstellen: $ array = array ('Alcatel', 'Apple', 'Huawei', 'LG', 'Microsoft', 'Motorola', 'Nokia', 'Samsung', 'Sony'). Es funktioniert und die Ausgabe von dem Profiler ist:
SELECT `name`
FROM `wl_manufacturers`
WHERE `active` = 1
AND `supplier_type` = 'product'
AND `name` NOT IN('Alcatel', 'Apple', 'Huawei', 'LG', 'Microsoft', 'Motorola',
'Nokia', 'Samsung', 'Sony')
Ich habe versucht, das Hinzufügen einfache Anführungszeichen in die durch Kommata getrennte Liste Elemente, bevor es auf das Modell übergeben:
$str = "'" . implode ("', '", $mnames) . "'";
aber die der Profiler-Ausgang ist dies :
SELECT `name`
FROM `wl_manufacturers`
WHERE `active` = 1
AND `supplier_type` = 'product'
AND `name` NOT IN('\'Alcatel\', \'Apple\', \'Huawei\', \'LG\', \'Microsoft\',
\'Motorola\', \'Nokia\', \'Samsung\', \'Sony\'')
Wieder funktioniert nicht, da Backslashes hinzugefügt worden sind. Die Frage ist also, wie kann ich eine durch Kommas getrennte Liste erstellen, sie an mein Modell übergeben und die Abfrage korrekt ausführen lassen?
Vielen Dank, nach Ihrer Antwort, bemerkte ich übergeben Komma getrennte Zeichenfolge in die Abfrage und nicht ein Array – David
groß in der Lage zu helfen, schöne Ferien ... – Vickel