我一直在创建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以进行重复输入。 为什么?我做错了什么?
答案 0 :(得分:1)
不,email
不是UNIQUE
。您的表定义中email
和telephone
对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 ;
";
。
{{1}}
可能这就是你想要的。