我想始终替换相同的现有数据库条目。
下面的代码总是创建一个新条目,我该如何修改它总是覆盖“version”?
$sql = "REPLACE INTO `traumprojekt`
(`version`, `geschlecht`, `alter`, `fuehrerschein`)
VALUES(
'" .mysql_real_escape_string( $version ). "',
'" .mysql_real_escape_string( $geschlecht ). "',
" .$alter. ",
" .$fuehrerschein. "
)";
mysql_query( $sql );
最佳答案
REPLACE 只是一个插入,它将在添加新行之前“删除”旧行。
如果存在将新行标记为“现有”的约束,它只能确定“旧”行。
您的替换语句没问题,但是您应该在 geschlecht
、alter
、fuehrerschein
上添加一个 UNIQUE INDEX所以它只能更改版本。
替代方案可以是 INSERT ... ON DUPLICATE KEY UPDATE
,但您还需要一个唯一的 key 。不同之处在于 REPLACE 执行 DELETE,然后 INSERT;而 INSERT ... ON DUPLICATE KEY UPDATE 执行更新而不是插入。例如触发器很重要......
关于php - MySQL 总是覆盖现有的数据库条目(UPDATE、REPLACE、INSERT ????),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24491331/