Saya tidak gila terbiasa dengan WPDB atau SQL pada umumnya, tetapi saya memiliki tabel khusus untuk proyek saya dan saya mencoba untuk menetapkan beberapa metadata untuk itu. Apa yang saya "ingin" terjadi adalah jika ada baris, perbarui dan jika tidak, sisipkan. Saya sudah membaca kedua Masukkan dan Perbarui dalam Codex WPDB tetapi tidak benar-benar pergi ke situasi "baik atau". Saya pikir saya bisa bekerja dengan pembaruan, jadi kode saya sejauh ini terlihat seperti ini:
$wpdb->update(
$wpdb->prepare(
$wpdb->prefix.'item_info',
array(
'post_id' => $post_id,
'item_stock' => $item_stock
),
array('post_id' => $post_id)
)
);
Apakah WordPress memiliki sesuatu seperti "JIKA ada Pembaruan, Sisipan LAIN", atau apakah saya perlu menjalankan SQL kustom untuk mencapai ini, atau apakah saya perlu query database terlebih dahulu untuk melihat apakah ID ada di meja saya LALU memutuskan apakah akan memperbarui atau memasukkannya?
Sudahkah Anda mencoba
$wpdb->replace
. Menurut WP Codex:Ganti baris dalam tabel jika ada atau masukkan baris baru dalam tabel jika baris belum ada.
Saya telah mencoba sendiri di beberapa plugin dan berhasil ketika mencoba untuk menghindari kesalahan duplikasi ID unik, dll.
Info lebih lanjut dalam naskah kuno
sumber
$wpdb->replace
ini adalah penulisan ulang yang merusak dari seluruh catatan, sedangkan$wpdb->update
hanya pembaruan bidang spesifik yang termasuk dalam$data
arrayAnda harus memeriksa apakah baris ada terlebih dahulu.
Kemungkinan besar Anda ingin mencoba untuk mendapatkan ID atau kunci utama untuk baris yang Anda coba perbarui, maka
$wpdb->update
jika itu atau$wpdb->insert
tidak.sumber