No estoy muy familiarizado con WPDB o SQL en general, pero tengo una tabla personalizada para mi proyecto y estoy tratando de asignarle algunos metadatos. Lo que "me gustaría" que ocurra es que si existe una fila, actualícela y, si no, insértela. He leído Insertar y Actualizar en el Codex WPDB pero ninguno de los dos entró en una situación de "uno u otro". Pensé que podría trabajar con la actualización, por lo que mi código hasta ahora se ve así:
$wpdb->update(
$wpdb->prepare(
$wpdb->prefix.'item_info',
array(
'post_id' => $post_id,
'item_stock' => $item_stock
),
array('post_id' => $post_id)
)
);
¿Tiene WordPress algo así como "IF IF Update, ELSE Insert", o necesito ejecutar SQL personalizado para lograr esto, o necesito consultar primero la base de datos para ver si existe una ID en mi tabla y luego decidir si actualizar o lo inserta?
¿Lo has intentado
$wpdb->replace
? Según WP Codex:Reemplace una fila en una tabla si existe o inserte una nueva fila en una tabla si la fila aún no existía.
Lo he probado en algunos complementos y hace el trabajo al tratar de evitar errores únicos de duplicación de ID, etc.
Más información en el códice
fuente
$wpdb->replace
es una sobrescritura destructiva de todo el registro, mientras que$wpdb->update
solo actualiza los campos específicos incluidos en la$data
matrizDebe verificar si la fila existe primero.
Lo más probable es que desee intentar obtener el ID o la clave principal de la fila que está tratando de actualizar, y
$wpdb->update
si lo hace o$wpdb->insert
no.fuente