web-dev-qa-db-fra.com

$ wpdb-> delete valeurs de colonne IN ARRAY ()?

Je me demande si c'est possible?

$wpdb->delete(
    'table_name',
    array('id' => array(1, 2, 3)),
    array('%d')
);

Dans cette situation, il convient donc de supprimer 3 lignes à la fois et d’appeler la base de données une seule fois. J'ai beaucoup de suppressions possibles avec mon script et je préférerais qu'il ne les efface qu'une seule fois, au lieu d'avoir à parcourir tous les identifiants et à faire un $wpdb->delete individuellement sur chacun d'eux. Est-ce possible? On dirait que ça devrait être ...

1
Solomon Closson

Non, wpdb::delete fait pas gère rien d'autre que WHERE field = X. Vous pouvez simplement utiliser la méthode query à la place:

$ids = implode( ',', array_map( 'absint', $ids ) );
$wpdb->query( "DELETE FROM table_name WHERE ID IN($ids)" );
4
TheDeadMedic