$ wpdb-> insert不响应唯一字段

时间:2014-03-24 11:07:20

标签: php mysql wordpress wordpress-plugin

我一直在创建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_dump 1.任何重复的wp刷新都会打开db以进行重复输入。 为什么?我做错了什么?

1 个答案:

答案 0 :(得分:1)

不,email不是UNIQUE。您的表定义中emailtelephoneUNIQUE$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 ; ";

{{1}}

可能这就是你想要的。