2012-05-08 5 views
13

だから私は使用して1行を削除することができます複数の行を削除するにはどうすればよいですか?

$this->db->delete($tableName,array("id"=>4)); 

...しかし、私は複数の行を削除する方法を見つけ出すことはできません。

$this->db->delete($tableName,array("id"=>4,"id"=5)); 

と同様に:私が試した

$this->db->delete($tableName,array(array("id"=>4),array("id"=5))); 

を...しかし、彼らの両方が動作しません。これがかなり簡単になるはずです。答えは?シングルユースの行を削除するには

答えて

32

ため

$this->db->delete('TABLE_NAME', array(array('id' => 5), array('id' => 3), ...)); 
+0

あなたは大丈夫です –

+1

複数の列にある削除条件付きの複数のレコードを削除するにはどうすればいいですか(ここで、col1 = 1、col2 = 2、私はmultidim配列 –

+0

でこの条件を持っている素晴らしい発見..!これはCIドキュメントには記載されていません。魅力のように動作します –

0

$this->db->delete('TABLE_NAME', array('id' => 5)); 

は、あなたがこれをやってみましたがありますか?私はそれがうまくいくと確信しています。それ

$this->db->query("DELETE FROM `TABLE_NAME` WHERE `id` IN(1,2,3,4,5)"); 
+0

あなたが提案したことを試してみましたが、ただエラーが発生しました。 – Joe

3

書き込みカスタムクエリは、あなたはこれを試したことがありますか?

​​3210
+0

これは、CIのwhere_in関数を使用する@ MoyedAnsariの回答のマニュアルバージョンであるため、動作するはずです。ありがとう。 – Joe

6

連想配列は必要ありません。

$ids[] = 1; 
$ids[] = 2; 

$this->db->where_in(id, $ids); 
$this->db->delete('Table_Name'); 
1

それは我々が「4」(このような単一引用符で一人ひとりIDを潜っする必要があります

$names = array(4,5); 
$this->db->where_in('id', $names); 
$this->db->delete('mytable'); 

DELETE FROM table_name WHERE id IN ('4,5') 

予告一つのことではない単一の文字列/数字(「4,5」)を動作していません、5 '')

上記のクエリは、仕事を楽しむになります最善と良い方法

 //$ids = 1,2,3..... 
     $ids_exp = explode(',',$ids); 
     $this->db->where_in('id',$ids_exp);// 
     $this->db->delete('table_name') 
     return $this->db->affected_rows(); 

..........

+0

なぜ戻り値が常に1を返すか$ this-> db-> affected_rows(); –

関連する問題