Я не очень знаком с WPDB или SQL в целом, но у меня есть настраиваемая таблица для моего проекта, и я пытаюсь присвоить ей некоторые метаданные. То, что я «хотел бы», - это если строка существует, обновите ее, а если не вставьте. Я прочитал «Вставить и обновить» в Кодексе WPDB, но ни один из них не попал в ситуацию «или» или «. Я думал, что смогу работать с обновлением, поэтому мой код выглядит так:
$wpdb->update(
$wpdb->prepare(
$wpdb->prefix.'item_info',
array(
'post_id' => $post_id,
'item_stock' => $item_stock
),
array('post_id' => $post_id)
)
);
Есть ли в WordPress что-то вроде «если существует обновление, вставка ELSE», или мне нужно запустить собственный SQL для этого, или мне сначала нужно запросить базу данных, чтобы узнать, существует ли идентификатор в моей таблице, ТОГДА решите, нужно ли обновлять это или вставить это?
Вы пробовали
$wpdb->replace
. Согласно WP Codex:Замените строку в таблице, если она существует, или вставьте новую строку в таблицу, если строка еще не существовала.
Я пробовал себя в некоторых плагинах, и он работает, пытаясь избежать ошибок дублирования уникальных идентификаторов и т. Д.
Больше информации в кодексе
источник
$wpdb->replace
это разрушительная перезапись всей записи, тогда как$wpdb->update
обновляются только определенные поля, включенные в$data
массивВы должны проверить, существует ли строка в первую очередь.
Скорее всего, вы захотите получить идентификатор или первичный ключ для строки, которую вы пытаетесь обновить, тогда,
$wpdb->update
если это произойдет или$wpdb->insert
нетисточник