$wpdb->delete valori coloană folosind IN ARRAY()?

22 mai 2016, 10:04:44
Vizualizări: 21.9K
Voturi: 5

Mă întreb dacă este posibil acest lucru?

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

Așadar, în această situație, ar trebui să elimine 3 rânduri deodată și să apeleze baza de date o singură dată. Am multe ștergeri posibile în scriptul meu și aș prefera să efectueze ștergerea o singură dată, în loc să trebuiască să parcurg toate ID-urile și să execut $wpdb->delete pentru fiecare în parte. Este posibil acest lucru? Pare că ar trebui să fie...

3
Comentarii

Ai încercat? Sau mai bine, ai căutat?

Tim Malone Tim Malone
22 mai 2016 12:37:53

Da, m-am uitat la funcție și nu părea posibil. Dar sincer, ar trebui să fie posibil să faci asta, deoarece nu e mare diferență și ar avea sens să fie inclus în această funcție.

Solomon Closson Solomon Closson
22 mai 2016 20:34:57

Nu înțeleg de ce downvote aici... poate cine a făcut-o mă poate ajuta să înțeleg de ce? De ce ignoranța de a întreba dacă am căutat? Bineînțeles că am căutat, și am vrut să întreb oricum. Nu pentru asta există acest site?

Solomon Closson Solomon Closson
22 mai 2016 20:44:53
Toate răspunsurile la întrebare 1
6
12

Nu, wpdb::delete nu gestionează altceva decât WHERE field = X. În schimb, poți folosi metoda query:

$ids = implode( ',', array_map( 'absint', $ids ) );
$wpdb->query( "DELETE FROM table_name WHERE ID IN($ids)" );
22 mai 2016 13:05:23
Comentarii

Mulțumesc, sunt conștient de alternative. Nu văd relevanța utilizării absint deoarece aceasta ar fi relevantă doar pentru coloanele UNSIGNED, iar acesta poate să nu fie cazul. Dar totuși, mulțumesc pentru exemplul tău cu metoda alternativă.

Solomon Closson Solomon Closson
22 mai 2016 20:43:32

Doar demonstrez un nivel de sanitarizare; mă îndoiesc că ID-urile tale vor fi hardcodate?

TheDeadMedic TheDeadMedic
22 mai 2016 20:45:23

Da, ID-urile nu sunt hardcodate, ele sunt într-un array, deci acesta este un bun exemplu, doar că nu folosim absint presupun. Oricum, mulțumesc.

Solomon Closson Solomon Closson
22 mai 2016 21:02:32

Atunci folosește pur și simplu intval în loc

TheDeadMedic TheDeadMedic
22 mai 2016 21:02:57

Adevărat, cred că ar trebui să adauge această funcționalitate în WordPress, pare suficient de simplu de implementat. Dar până atunci, acest răspuns este în regulă.

Solomon Closson Solomon Closson
22 mai 2016 21:03:36

Dacă dorești această funcționalitate, trimite un ticket trac - aceasta este frumusețea sursei deschise, este construită de noi toți.

TheDeadMedic TheDeadMedic
22 mai 2016 21:04:41
Arată celelalte 1 comentarii