Ich bin mit WPDB oder SQL im Allgemeinen nicht verrückt, aber ich habe eine benutzerdefinierte Tabelle für mein Projekt und ich versuche, ihr einige Metadaten zuzuweisen. Was ich "möchte" ist, wenn eine Zeile existiert, aktualisieren Sie sie und wenn nicht, fügen Sie sie ein. Ich habe sowohl Insert als auch Update im WPDB Codex gelesen, bin aber auch nicht wirklich in eine "entweder oder" Situation geraten. Ich dachte, ich könnte mit update arbeiten, also sieht mein Code bisher so aus:
$wpdb->update(
$wpdb->prepare(
$wpdb->prefix.'item_info',
array(
'post_id' => $post_id,
'item_stock' => $item_stock
),
array('post_id' => $post_id)
)
);
Hat WordPress so etwas wie ein "WENN vorhanden, Update, ELSE Einfügen" oder muss ich benutzerdefiniertes SQL ausführen, um dies zu erreichen, oder muss ich zuerst die Datenbank abfragen, um festzustellen, ob eine ID in meiner Tabelle vorhanden ist, und dann entscheiden, ob eine Aktualisierung durchgeführt werden soll es oder legen Sie es ein?
Hast du es versucht
$wpdb->replace
? Laut WP Codex:Ersetzen Sie eine Zeile in einer Tabelle, falls vorhanden, oder fügen Sie eine neue Zeile in eine Tabelle ein, falls die Zeile noch nicht vorhanden war.
Ich habe mich in einigen Plugins ausprobiert und es funktioniert, wenn versucht wird, Fehler durch Duplizieren von eindeutigen IDs usw. zu vermeiden.
Mehr Infos im Codex
quelle
$wpdb->replace
ein destruktives Überschreiben des gesamten Datensatzes ist, während$wpdb->update
nur die im$data
Array enthaltenen spezifischen Felder aktualisiert werdenSie sollten zuerst prüfen, ob die Zeile vorhanden ist.
Höchstwahrscheinlich möchten Sie versuchen, die ID oder den Primärschlüssel für die Zeile abzurufen, die Sie aktualisieren möchten, und dann,
$wpdb->update
ob dies der Fall ist oder$wpdb->insert
nichtquelle