18

したがって、次を使用して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)));

...しかし、どちらも機能しません。これはかなり簡単なはずだと思います。何か答えはありますか?

4

6 に答える 6

40

これを試しましたか?

$names = array(4,5);
$this->db->where_in('id', $names);
$this->db->delete('mytable');
于 2012-05-08T06:38:04.017 に答える
7

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

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

$this->db->where_in( id, $ids );
$this->db->delete('Table_Name');
于 2013-01-31T10:13:41.097 に答える
4

カスタムクエリを作成する

$this->db->query("DELETE FROM `TABLE_NAME` WHERE `id` IN(1,2,3,4,5)");
于 2012-05-08T05:55:35.347 に答える
3

動作しません

$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')ではないことに注意してください。このように一重引用符ですべてのIDを分割する必要があります( '4'、 '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();

上記のクエリは、お楽しみいただけます。

于 2014-05-15T09:54:42.673 に答える
1

使い捨て行を削除するには:

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

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

$this->db->delete('TABLE_NAME', array(array('id' => 5), array('id' => 3), ...));
于 2012-05-08T03:38:07.047 に答える
0

これは古い質問ですが、8年後に同じ質問を調べなければならなかったので答えます。

のソースコードを確認したところ、$wpdb->delete()基本的に1行しか削除されません。これは、1つの列を1つの値に一致させてから、ANDで結合することによって機能します。したがって、array("id"=>4,"id"=>5)そうすると、(id == 4 AND id == 5)の行として読み取られます。その条件に一致する行はありません。

したがって、複数の行を削除するには、(私が見た限りでは)カスタムクエリを使用するしかありません。

$wpdb->query("DELETE FROM `TABLE_NAME` WHERE `id` IN(1,2,3,4,5)");
于 2020-10-21T12:45:57.453 に答える