php - MySQL在一个唯一名称下设置多个版本的数据

标签 php mysql

我正在创建一个 PHP 表单,以唯一的项目名称存储项目数据,然后将该数据存储到 MySQL 数据库中。

例如:

项目名称:Proj001

最大赛车速度(米/秒):80

但是,我希望能够添加项目的新版本,同时保留旧版本的项目数据。如果可能,我想创建一个选项,以便用户可以将项目版本指定为“默认”项目,以在用户使用搜索引擎查找项目时显示。他们可以使用其他方法切换搜索引擎上显示的默认项目。

例如:

项目名称:Proj001

最大赛车速度(米/秒):85

Proj001 已经存在!将此设置为默认值吗?是/否

(如果用户选择"is",则搜索 Proj001 时,最大赛车速度将返回 85。如果用户选择“否”,则搜索 Proj001 时,最大赛车速度将返回 80)。

是否可以使用 PHP/MySQL 执行类似的操作?我不是在寻找任何代码,而是在寻找如何使用该语言使其工作的可能概念。

最佳答案

MySQL 中没有任何内容表明一行需要唯一标识符。这样做当然是常见的做法,但绝不是必需的。

你绝对可以实现你的例子。显然,您需要一个 bool 字段 default ,只要用户输入值就可以更新它。如果有默认更新的结果提示,只需在收集用户输入时从 PHP 运行 SELECT 查询即可,否则只需添加它即可开始使用。

如果没有唯一标识符,您最常遇到的问题是更新行。让我们以您的示例为例,假设用户再次输入 80 英里/小时作为最大速度。如果添加该行,您现在将拥有两行,其中包含 Proj00180 作为字段。 SQL 如何知道要更新哪一个?您始终可以在查询中添加 LIMIT 1 以仅更新 1 行,但这至少应该提供一些关于为什么常用唯一字段的见解。

关于php - MySQL在一个唯一名称下设置多个版本的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17687465/

相关文章:

php - 如何将 andWhere 和 orWhere 与 Doctrines Criteria 结合起来

php - 搜索超过 1 列

php - 插入具有相同唯一 ID 的多行

php - 如何在 Silex 中设置 Twig 文件和 Assets 文件(CSS、Js)之间的引用?

php - 检查 Woocommerce 电子邮件通知中两个产品的顺序是否相同

java - 使用preparestatement时链接到另一个应用程序

php - MysqlI_fetch_array并使用变量调用数据

mysql - SQL #1066 - 不是唯一的表/别名 :

mysql - 在 MySQL 中选择 if else

mysql - perl-DBI 中十进制值之间的近似选择