仅在MySQL表中不存在数据时插入数据:INSERT IGNORE出现问题

时间:2013-04-01 20:51:21

标签: php mysql insert ignore

所以我一直在寻找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]')");

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

2 个答案:

答案 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,你会看到你的独特索引吗?