Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.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 重复更新时的复合唯一索引_Php_Mysql_Indexing_Duplicates - Fatal编程技术网

Php 重复更新时的复合唯一索引

Php 重复更新时的复合唯一索引,php,mysql,indexing,duplicates,Php,Mysql,Indexing,Duplicates,我想在mysql中使用INSERT ON DUPLICATE KEY UPDATE,我有一个复合唯一索引 产品id和语言id是复合索引。而且是独一无二的 这是product_语言表 产品标识=1 语言\u id=1 title='产品名称,在任何 语言的 和其他领域 这是我的密码。我想用任何语言更改产品名称。如果我想换法语,如果是德语,id是2,等等 每种语言的翻译都必须是唯一的,因为我创建了复合索引 $sql = "INSERT INTO ".PREFIX."product_language(

我想在mysql中使用INSERT ON DUPLICATE KEY UPDATE,我有一个复合唯一索引

产品id和语言id是复合索引。而且是独一无二的

这是product_语言表

产品标识=1 语言\u id=1 title='产品名称,在任何 语言的

和其他领域

这是我的密码。我想用任何语言更改产品名称。如果我想换法语,如果是德语,id是2,等等

每种语言的翻译都必须是唯一的,因为我创建了复合索引

$sql = "INSERT INTO ".PREFIX."product_language(product_id, language_id, title) "
          . "VALUES (:id, 1, :data) ON DUPLICATE KEY UPDATE title = :data";
在这里有一个注意事项:避免使用复合索引


我该怎么做?它不起作用了

你能在手册中包含参考的链接吗?前缀是什么。您说您有一个product_语言表,但实际上您正在更新product_语言。这可能是您的问题。我包括了链接,这句话是一般性的,您应该尽量避免在具有多个唯一索引的表上使用ON replice KEY UPDATE子句。PREFIX与此主题无关。这是我的数据库前缀的一部分。您可能希望在此处看到ceejayoz的答案: