我正在创建一个php表单,用于将项目数据存储在一个唯一的项目名称下,然后将该数据存储到MySQL数据库中。
例如:
项目名称:Proj001
最高比赛速度(m / s):80
但是,我希望能够在保留较旧版本的项目数据的同时添加项目的较新版本。如果可能的话,我想创建一个选项,以便用户可以将项目版本指定为“默认”项目,以显示用户何时使用搜索引擎查找项目。他们可以使用其他方法切换显示在搜索引擎上的默认项目。
例如:
项目名称:Proj001
最高比赛速度(m / s):85
Proj001已经存在!这是默认的吗?是/否的
(如果用户选择是,则在搜索Proj001时,最大赛车速度将返回85.如果用户选择否,则在搜索Proj001时,最大赛车速度将返回80)。
用PHP / MySQL做这样的事情有可能吗?我不是在寻找任何代码,而是寻找如何使用该语言使其工作的可能概念。
答案 0 :(得分:0)
MySQL中没有任何内容表明行需要唯一标识符。这样做当然是通常的做法,但绝不是必需的。
你绝对可以实现你的例子。您显然需要一个布尔字段default
,只要用户输入一个值就可以更新。只需在收集用户输入时从PHP运行SELECT
查询,如果有结果提示进行默认更新,否则只需添加它即可。
在没有唯一标识符的情况下,最常遇到的问题是更新行。让我们举个例子,但是说用户再次以80英里/小时的速度输入最大速度。如果您添加该行,则现在有两行以Proj001
和80
作为字段。 SQL如何知道更新哪一个?您始终可以在查询中添加LIMIT 1
以仅更新1行,但这至少可以提供有关常用唯一字段的原因。
答案 1 :(得分:0)
当然有可能。
您需要的是一个包含默认值以及自动递增ID字段的字段。
正常插入插件。
对于你的set默认函数,会这样做(伪代码)。
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");
}
这将确保对于给定的项目名称,只存在一个默认值。