Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在MYSQL中,重复密钥仍作为条目插入_Php_Mysql_On Duplicate Key - Fatal编程技术网

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”附近使用的正确语法