Não estou familiarizado com o WPDB ou SQL em geral, mas tenho uma tabela personalizada para o meu projeto e estou tentando atribuir alguns metadados a ele. O que eu gostaria que acontecesse é que, se existir uma linha, atualize-a e, se não, insira-a. Eu li tanto Insert quanto Update no WPDB Codex, mas nenhum deles realmente entrou em uma situação "ou" ou "". Eu pensei que poderia trabalhar com atualização, então meu código até agora é assim:
$wpdb->update(
$wpdb->prepare(
$wpdb->prefix.'item_info',
array(
'post_id' => $post_id,
'item_stock' => $item_stock
),
array('post_id' => $post_id)
)
);
O WordPress tem algo como "SE existe atualização, inserção ELSE" ou preciso executar o SQL personalizado para conseguir isso ou preciso consultar o banco de dados primeiro para ver se existe um ID na minha tabela e, em seguida, decidir atualizar ou inseri-lo?
Você já tentou
$wpdb->replace
? De acordo com o WP Codex:Substitua uma linha em uma tabela, se existir, ou insira uma nova linha em uma tabela, se a linha ainda não existir.
Eu tentei em alguns plug-ins e ele funciona quando tenta evitar erros de duplicação de IDs exclusivos, etc.
Mais informações no codex
fonte
$wpdb->replace
é uma substituição destrutiva de todo o registro, enquanto$wpdb->update
apenas atualiza os campos específicos incluídos na$data
matrizVocê deve verificar se a linha existe primeiro.
Provavelmente, você desejará tentar obter o ID ou a chave primária da linha que está tentando atualizar,
$wpdb->update
se houver ou$wpdb->insert
nãofonte