如何在使用wpdb插入之前检查重复记录

时间:2014-06-24 作者:M1 Creative Developer

我正在wordpress数据库的自定义表中插入一行。代码如下:

$wpdb->insert( \'wp_pl_my_parts\', 
                    array( 
                    \'user_ID\' => $user_ID, 
                    \'PL_part_ID\' => $PL_part_ID, 
                    \'part_save_date\' => $part_save_date ), array( \'%d\', \'%d\', \'%s\' ) );
如何确保不插入重复条目。例如,如果user\\u ID和PL\\u part\\u ID与现有记录相同,我不希望插入它?

日期无关紧要,不应检查。

4 个回复
SO网友:Chittaranjan

假设表的主键是my_part_ID. 因此,我们将检查是否存在以下组合的主键值user_IDPL_part_ID 如下所示

$my_part_ID = $wpdb->get_var(
                $wpdb->prepare(
                    "SELECT my_part_ID FROM " . $wpdb->prefix . "pl_my_parts
                    WHERE user_ID = %d AND PL_part_ID = %d LIMIT 1",
                    $user_ID, $PL_part_ID
                )
            );

if ( $my_part_ID > 0 )
    // exists
else
    // does not exist

SO网友:Caleuanhopkins

我发现用WPDB检查记录是否存在的最好方法是首先使用WPDB更新函数进行检查。例如:

    if(!$wpdb->update($wpdb->prefix.\'table_name\',$data,array(\'id\'=>$dbRowId),array(\'%s\'),array(\'%d\'))){
        $wpdb->insert($wpdb->prefix.\'table_name\',$data,array(\'%s\'));
        return $wpdb->insert_id;
    }else{
        return $dbRowId;
    }
就整体功能而言,它比您想要的要大一点,但如果您在插件或主题中的模型或DB类中将其设置为可调用方法,则可以处理WPDB功能。

SO网友:Nicolai Grossherr

只需使用UNIQUE 索引要防止重复,请参阅MySQL: CREATE INDEX Syntax 对于初学者。有关WordPress的详细信息,请查看Codex: Creating Tables with Plugins - Create Database Tables. 下面的示例代码取自此处:

global $wpdb;
$sql = "CREATE TABLE $table_name (
  id mediumint(9) NOT NULL AUTO_INCREMENT,
  time datetime DEFAULT \'0000-00-00 00:00:00\' NOT NULL,
  name tinytext NOT NULL,
  text text NOT NULL,
  url VARCHAR(55) DEFAULT \'\' NOT NULL,
  UNIQUE KEY id (id)
);";

require_once( ABSPATH . \'wp-admin/includes/upgrade.php\' );
dbDelta( $sql );
这个答案的前提是,要防止OP事先遇到的问题。也就是说,设计、规划和设置的方式要使问题一开始就不会发生。

SO网友:HeroWeb512
global $wpdb;
$table_user = $wpdb->prefix . \'user\';
$PL_part_ID= $_POST[\'PL_part_ID\'];
// first check if data exists with select query
$datum = $wpdb->get_results("SELECT * FROM $table_user WHERE PL_part_ID= \'".$PL_part_ID."\'");
 if($wpdb->num_rows > 0) {
 echo "result exists";
 }
// if not exist in the database then insert it
else{
$result = $wpdb->insert( 
$table_token, 
array( 
\'Firstname\' => $_POST["value1"],
\'Surname\' => $_POST["value2"],
\'Month\' => $_POST["value3"],
\'Day\' => $_POST["value4"],
\'Email Address\' => $_POST["value5"]
)
);
}
结束

相关推荐

wpdb->update error

我正在尝试更新重力表单详细信息表中某个条目的值。我只是想更新条目中的“日期”字段。以下是我的疑问: $update_date = $wpdb->update( \'wp_rg_lead_detail\', array( \'value\' => the_date(\'Y-m-d\') ), array( &