所以我一直在寻找StackOverflow和MySQL手册一段时间,我似乎无法解决我的问题。我正在尝试做的只是使我的数据INSERT函数,以便它不会向我的表添加任何东西,如果它已经存在。我看到了几个方法:INSERT IGNORE函数和一个唯一索引,对我来说似乎是最好的,但我不知道为什么它不起作用......这是我代码的一部分(我有两列:'username'和'email',我的表名为'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]')");
我哪里错了?我错过了什么吗?
答案 0 :(得分:2)
您无法创建名为index的索引。
Mysql不区分大小写。您的INDEX错误地命名为“index”将无效。
示例:
的MySQL>在tbladresse上创建索引索引(strasse_zusatz); 错误1064(42000):您的SQL语法有错误;检查手册 对应于您的MySQL服务器版本,以便在'index附近使用正确的语法 在tbladresse(strasse_zusatz)'第1行
的MySQL>在tbladresse上创建索引iindex(strasse_zusatz); 查询正常,0行受影响(0.03秒) 记录:0重复:0警告:0
答案 1 :(得分:2)
Insert Ignore
只是告诉MySQL在尝试将重复数据插入具有唯一约束的字段时不会发出重复键错误。
唯一索引应该是阻止插入重复条目所需的全部索引。
通常,您不希望使用PHP添加索引等操作,您应该通过用于访问数据库的任何工具来执行此操作。
您是否看到重复的用户名/电子邮件组合被插入到您的表中? $array_values[0]
和$array_values[1]
的价值是多少?
如果你做SHOW INDEX FROM info4
,你会看到你的独特索引吗?