如果我输入一行,其中wpdb->replace使用一个已经存在的ID,它将被替换,并返回2。如果输入新行,则自动生成ID,插入新行并返回1。完美的
但是,如果输入的行与现有行完全匹配(我仍然希望删除并插入),则返回1(即使没有在数据库中插入新行)。为什么会这样?!
当一行插入到我的数据库中时,我正在尝试插入一篇文章。ie.)更换时返回1。但当我插入现有行的精确副本时,我也会收到新的帖子。
function xxxx_insert_entry( $post_id, $entry, $type, $entry_id = null ) {
global $wpdb;
$result = $wpdb->replace(
$wpdb->prefix . \'xxxx_entries\',
array(
\'ID\' => $entry_id, // PRIMARY KEY
\'post_id\' => $post_id,
\'entry\' => $entry,
\'type\' => $type
)
);
if ( $result === false ) return $result;
$insert_id = $wpdb->insert_id;
if ( 1 == $result ){ // INSERT OCCURRED
$args = array(
\'post_type\' => \'entry\',
\'post_title\' => $entry,
\'post_status\' => \'publish\',
\'meta_input\' => array( \'entry_id\' => $insert_id ),
);
wp_insert_post( $args, true );
} // ELSE REPLACE OCCURRED
return $insert_id;
}