我在最好的数据存储方式上苦苦挣扎-直接来自用户的“原始”数据与需要转换的“编码”数据。这是一个选择列表的具体示例,该列表指示在哪里测量了患者的血压:
<select id="location">
<option value="1">Office</option>
<option value="2">Home</option>
<option value="3">Hospital</option>
<option value="4">Work</option>
<option value="5">Other</option>
</select>
过去,我将存储变量设为VARCHAR,并将其存储为所有小写字母“ office”,“ home”,“ hospital”,“ work”,“ other”。但是在过去的一个月中,我一直在思考,也许更“优雅”的方法是将其存储为整数“代码”(如上例所示),然后在从表中读取它时将其转换,像这样服务器端翻译:
$location=$row['location'];
if ($location == '1') {$location = "Office";}
else if ($location == '2') {$location = "Home";}
else if ($location == '3') {$location = "Hospital";}
else if ($location == '4') {$location = "Work";}
else if ($location == '5') {$location = "Other";}
所以我对您的菜鸟提问有点哲理-
您是否总是/有时将数据存储为“原始” VARCHAR数据,还是使用整数/布尔值等“编码”?你有做这件事的标准吗?
如果您对数据进行“编码”,那么您是在服务器端还是在客户端“解码”数据?
我预先感谢您的想法。
答案是:魔术数字不好。在任何情况下,您都不应在if ($foo == 4)
代码中使用代码,因为简单地说,WTF是“ 4”的意思吗?
如果有的话,请为此使用常量:
define('HOSPITAL', 4);
if ($foo == HOSPITAL) ...
这还不错,因为您不再与潜在的无意义的价值直接接触。但是,如果您必须调试应用程序,那么您会在所有位置(包括数据库)看到该值。枚举在这里很有用,但是PHP不支持它们。数据库确实可以。因此,一个折衷方案是在数据库中使用ENUM,在PHP中使用常量:
CREATE TABLE foos (
foo ENUM('hospital', 'office', ...)
);
define('HOSPITAL', 'hospital');
if ($foo == HOSPITAL) ...
这给您:
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句