Primeiro, você está usando prepare
incorretamente. Você parece ter os argumentos de $wpdb->update
envolvidos em $wpdb->prepare
desse jeito. Isso não vai funcionar. De fato, você está passando update
um único argumento-- a saída de prepare
. Experimente algo simples como o seguinte e você verá por que isso não funcionará:
$post_id = 123;
$item_stock = 567;
var_dump(
$wpdb->prepare(
$wpdb->prefix.'item_info',
array(
'post_id' => $post_id,
'item_stock' => $item_stock
),
array('post_id' => $post_id)
)
);
E $wpdb->update()
runs prepare
para você .
Em segundo lugar, se este fosse eu, eu pulo o inchaço da função de ajuda e escrevo uma consulta ON DUPLICATE KEY UPDATE
adequada:
$sql = "INSERT INTO {$wpdb->prefix}item_info (post_id,item_stock) VALUES (%d,%s) ON DUPLICATE KEY UPDATE item_stock = %s";
// var_dump($sql); // debug
$sql = $wpdb->prepare($sql,$post_id,$item_stock,$item_stock);
// var_dump($sql); // debug
$wpdb->query($sql);
Isso pressupõe que post_id
seja um UNIQUE
index ou PRIMARY KEY
. Se sua estrutura de tabela é o que eu acho que é, deixe o banco de dados lidar com isso.