Php 在MYSQL中,重复密钥仍作为条目插入
它只是不断地添加一个Php 在MYSQL中,重复密钥仍作为条目插入,php,mysql,on-duplicate-key,Php,Mysql,On Duplicate Key,它只是不断地添加一个行,即使它已经存在,我不明白为什么 $submitted = explode("@", $submit['tag']); foreach ($submitted as $tag => $value) { if ($value != "") { $attag = "@".$value; $sql_insert = dbquery("INSERT INTO dbtags(tag_name, tag_txt) VALUES('$valu
行
,即使它已经存在,我不明白为什么
$submitted = explode("@", $submit['tag']);
foreach ($submitted as $tag => $value) {
if ($value != "") {
$attag = "@".$value;
$sql_insert = dbquery("INSERT INTO dbtags(tag_name, tag_txt) VALUES('$value', '$attag') ON DUPLICATE KEY UPDATE tag_name=tag_name");
}
}
有人能帮忙吗?它应该是唯一的,否则复制将不起作用。在重复密钥更新时,将“标记名称=标记名称”)更改为“在重复密钥上忽略”它应该是唯一的,否则重复将不起作用。在重复密钥更新时,将“标记名称=标记名称”)更改为“在重复密钥上忽略”您确定您的意思是
更新标记名称=标记名称
而不是更新标记名称=$value
另外,.你确定你的意思是
更新标签名称=标签名称
而不是更新标签名称=$value
此外,.将标记名称数据类型更改为二进制,您可能会面临区分大小写的问题将标记名称数据类型更改为二进制,您可能会面临区分大小写的问题标记名称是主键吗?(还是唯一的?)我强烈建议将查询移出循环。@Johan,它是唯一的。如果我把它改成主键,效果会更好吗?@Dave Chen,如果我这样做,它不会检查/插入每次爆炸。唯一应该足够了,你能描述dbtags吗?“tag_name”是主键吗?(还是唯一的?)我强烈建议将查询移出循环。@Johan,它是唯一的。如果我把它改成主模式,它会工作得更好吗?@Dave Chen,如果我这样做,它不会为每次爆炸都检查/插入。Unique应该足够了,你能描述一下给我这个的dbtags吗。。您的SQL语法有错误;请查看与MySQL服务器版本对应的手册,以获得正确的语法,该语法使用的语法接近“IGNORE tag\u name=tag\u name”,这就是我的答案。。您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,以了解在“IGNORE tag\u name=tag\u name”附近使用的正确语法