首先,您正在使用prepare
不正确。你好像有$wpdb->update
\'s参数包装在$wpdb->prepare
就像那样。那行不通。实际上,您正在通过update
单个参数--的输出prepare
. 尝试以下简单方法,您就会明白为什么这样做行不通:
$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)
)
);
And $wpdb->update()
runs prepare
for you.
其次,如果这是我,我会跳过helper函数膨胀并编写一个适当的ON DUPLICATE KEY UPDATE
查询:
$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);
这假设
post_id
是一个
UNIQUE
index or PRIMARY KEY
. 如果您的表结构是我认为的那样,那么让数据库来处理它。