繁体   English   中英

$ wpdb-> insert不会重新分配唯一字段

[英]$wpdb->insert is not respacting unique fields

我已经创建Wordpress插件已有一段时间了。 这是mysql表的示例:

$sql = "CREATE TABLE IF NOT EXISTS $table_name  (
    id INT(11) NOT NULL AUTO_INCREMENT,
    email       VARCHAR(100) DEFAULT NULL,
    telephone   VARCHAR(15) DEFAULT NULL,
    PRIMARY KEY(id),
    UNIQUE (email, telephone)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='WP plugin sesa_players db' AUTO_INCREMENT=1 ;
";

电子邮件应该是唯一的,对吗? phpMyAdmin这样说。

这是将数据插入该表的wordpress代码:

$err = $wpdb->insert($wpdb->prefix.$table_name, $data, $format);
var_dump($err);

它的工作原理,甚至比应有的要多。 假设电子邮件是m@m.com。 第一次插入顺利。 第二次尝试由于应重复输入而失败。 var_dump为false。
但是,如果我刷新wp页面,则使用相同电子邮件的第三次尝试会顺利通过var_dump1。任何重复的wp刷新都会打开db,以重复输入。 为什么? 我究竟做错了什么?

不,这里的email不是UNIQUE emailtelephone对在表定义中是UNIQUE

$sql = "CREATE TABLE IF NOT EXISTS $table_name  (
    id INT(11) NOT NULL AUTO_INCREMENT,
    email       VARCHAR(100) DEFAULT NULL,
    telephone   VARCHAR(15) DEFAULT NULL,
    PRIMARY KEY(id),
    UNIQUE (email),
    UNIQUE (telephone)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='WP plugin sesa_players db' AUTO_INCREMENT=1 ;
";

可能这就是您想要的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM