0

所以我一直在查看 StackOverflow 和 MySQL 手册一段时间,但我似乎无法解决我的问题。我想要做的只是让我的数据 INSERT 函数,这样它就不会在我的表中添加任何东西,如果它已经存在的话。我看到了一些方法:INSERT IGNORE 函数以及唯一索引对我来说似乎是最好的,但我不知道为什么它不起作用......这是我的代码的一部分(我有两列:“用户名”和“电子邮件”,我的表名为“info4”):

$unique_index = mysqli_query ($con, "CREATE UNIQUE INDEX index ON info4 ( username, email);");

$insert = mysqli_query($con, "INSERT IGNORE INTO info4 (`username`, `email`) VALUES ('$array_values[0]', '$array_values[1]')");

我哪里错了?我错过了什么吗?

4

2 回答 2

2

您不能创建名为 index.html 的索引。

Mysql 不区分大小写。您的 INDEX 错误地命名为“索引”将不起作用。

例子:

mysql> 在 tbladresse (strasse_zusatz) 上创建索引索引;ERROR 1064 (42000):您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的 'index on tbladresse (strasse_zusatz)' 附近使用正确的语法

mysql> 在 tbladresse (strasse_zusatz) 上创建索引 iindex;查询正常,0 行受影响(0.03 秒)记录:0 重复:0 警告:0

于 2013-04-01T20:59:45.737 回答
2

Insert Ignore只是告诉 MySQL 在尝试将重复数据插入具有唯一约束的字段时不要发出重复键错误。

唯一索引应该是阻止插入重复条目所需的全部内容。

通常,您不想使用 PHP 添加索引之类的事情,您应该通过您用来访问数据库的任何工具来执行此操作。

您是否看到重复的用户名/电子邮件组合被插入到您的表中?$array_values[0]和的值是$array_values[1]多少?

如果你SHOW INDEX FROM info4看到你的唯一索引?

于 2013-04-01T21:04:23.657 回答