php - MySQL 总是覆盖现有的数据库条目(UPDATE、REPLACE、INSERT ????)

标签 php mysql replace insert

我想始终替换相同的现有数据库条目。

下面的代码总是创建一个新条目,我该如何修改它总是覆盖“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 只是一个插入,它将在添加新行之前“删除”旧行。

如果存在将新行标记为“现有”的约束,它只能确定“旧”行。

您的替换语句没问题,但是您应该在 geschlechtalterfuehrerschein 上添加一个 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/

相关文章:

php - 如何收集两个不同查询的 COUNT(*) ?

javascript - HTML 使用 javascript、ajax、jquery 更改内容

php - 如何使用 Laravel 在主 CoffeeScript 中需要其他 CoffeeScripts 文件?

php - mysql sleep 进程

javascript - 如何清除或替换缓存的图像

将 NA 替换为 NA 前后情况的平均值

php - .htaccess 域根目录之外的错误页面

mysql - ORDER BY 随机子级别的 SQL 语法?

mysql - 如何在不删除主要和外部约束的情况下在 mysql 中删除

java - 如何以用户友好的文本以编程方式替换 Spring 的 NumberFormatException?