0

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

例如:

项目名称:Proj001

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

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

例如:

项目名称:Proj001

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

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

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

可以用 PHP/MySQL 做这样的事情吗?我不是在寻找任何代码,而是寻找如何使用该语言使其工作的可能概念。

4

2 回答 2

0

当然这是可能的。

您将需要一个包含默认值的字段以及一个自动递增的 id 字段。

正常插入。

对于您设置的默认函数,将执行此操作(伪代码)。

 function setDefault($project_name, $id){
       $id = quoteAndSanatize($id);
       $project_name = quoteAndSanatize($project_name);
       $db->runQuery("UPDATE project set default = (id = $id) where name = $project_name");
 }

这将确保对于给定的项目名称仅存在一个默认值。

于 2013-07-16T21:50:07.803 回答
0

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

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

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

于 2013-07-16T21:42:27.747 回答