Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html 使用幻数是一种好的做法吗?_Html_Sql_Language Agnostic_Coding Style - Fatal编程技术网

Html 使用幻数是一种好的做法吗?

Html 使用幻数是一种好的做法吗?,html,sql,language-agnostic,coding-style,Html,Sql,Language Agnostic,Coding Style,我正在制作一个网络应用程序。在服务器端的某些情况下,我会进行mysql查询,我基本上会说where d.id=2,这意味着我会硬编码另一个表的外键。或者在客户端,我有一个带有单选字段的表单,输入字段值是表主键的id号,例如1、2、3 我想知道是使用这些“神奇数字”的良好实践,还是应该改为在查询中使用字符串值,这需要一个连接并在表单中作为输入值,然后我需要使用查询中的字符串值来获取id 这似乎是双向的,如果我需要修改主键值或字符串值来编辑表行,那么我必须更新客户端和服务器端的所有内容 好的做法是什

我正在制作一个网络应用程序。在服务器端的某些情况下,我会进行mysql查询,我基本上会说where d.id=2,这意味着我会硬编码另一个表的外键。或者在客户端,我有一个带有单选字段的表单,输入字段值是表主键的id号,例如1、2、3

我想知道是使用这些“神奇数字”的良好实践,还是应该改为在查询中使用字符串值,这需要一个连接并在表单中作为输入值,然后我需要使用查询中的字符串值来获取id

这似乎是双向的,如果我需要修改主键值或字符串值来编辑表行,那么我必须更新客户端和服务器端的所有内容

好的做法是什么


感谢

ID号通常由数据库任意分配,例如MySQL自动增量,它们只是时间上的意外。依赖它们并将它们硬编码到代码中通常是一个坏主意。相应的名称不太可能更改,因此如果必须硬编码某些内容,通常会更安全


此外,硬编码ID使代码更难理解。幻数对读者来说没有固有的意义,但字符串是助记的。

这是一个格式化的注释。由于omega请求了一个示例,下面是一个使用ColdFusion语法的示例

<cfquery name="getChoices">
select choiceId, choice
from choices
</cfquery>

<form>
<cfoutput query = "getChoices">
<input type = "radio" name="theChoice" value = "#choiceID#">#choice#
</cfoutput>
<input type="submit>
</form>

请注意,cfoutput标记在查询结果中循环。

对于您关于表单的问题,我更喜欢显示文本并提交id字段。您能举个例子吗,我不明白。这似乎是正确的答案,但我的逻辑是,假设您在任何地方都使用字符串值,然后决定更改数据库中记录的字符串值,然后必须到处更新它。例如,“红色”到“绿色”。我可以想象这种情况,但看不到id何时会改变。你能解释一下为什么id值更容易更改吗?如果你需要重新创建数据库,字符串不会更改,但是id可能会更改。但是如果你重新创建数据库,你可以简单地添加id属性,并强制它保持不变?即使它是自动递增的,你仍然可以添加id值,只要它当前是唯一的,它就可以工作。是的,你可以,但这是一个你不必担心的额外细节。ID本身不应该有任何特殊意义。