私はCodeigniterを使用しており、コントローラからコンマで区切られたリストをモデルに渡して、where_not_in
クエリで使用しています。コンマ区切りリストを作成する次のコードがあります。コントローラからモデルへコンマ区切りリストを渡す
$mnames = Array();
foreach($facet_group['manufacturer_name'] as $u) $mnames[] = $u['value'];
$manufacturer_list = implode(",",$mnames);
これは、Alcatel、Apple、Huawei、LG、Microsoft、Motorola、Nokia、Samsung、Sonyを生成します。プロファイラから出力される
$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はカンマ区切りリスト
さ:
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')
周りの単一引用符がありませんので、これは動作するようには思えない私のクエリはこれですリスト内の各項目。しかし、このようなリストを手作業で作成すると、$ array = array( 'Alcatel'、 'Apple'、 'Huawei'、 'LG'、 'Microsoft'、 'Motorola'、 'Nokia'、 'Samsung' )。私はモデルに渡す前に、カンマ区切りのリスト項目に単一引用符を追加しようとしている
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')
:
$str = "'" . implode ("', '", $mnames) . "'";
が、プロファイラ出力がこれですそれは動作し、プロファイラからの出力があります:
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\'')
バックスラッシュが追加されているため、再び動作しません。ですから質問はどうやってコンマ区切りリストを作成し、それを私のモデルに渡し、正しく動作するようにすることができますか?
ありがとう、あなたの答えの後、私はコンマ区切り文字列をクエリではなく、配列ではないことに気づいた – David
幸せな休日を助けることができる素晴らしい... – Vickel