我可以这样从数据库中替换PHP中的数据吗?

时间:2018-09-04 15:31:07

标签: php sql

我有一个数据库,并且有一个名为user_role的行。我使用0将默认值设置为PHP

如果我想用0Member这样的字符串替换Admin,我可以这样写吗:

$result_from_db = 0;

if($result_from_db == 0) {
  $role = "Member";
} elseif($result_from_db == 1) {
  $role = "Admin";
} else {
  $role = "Invalid!";
}

echo $role;  // Changes the value from DB to my custom string

尽管我可以在数据库中将0重命名为Member,但我想知道是否可以这样做。

3 个答案:

答案 0 :(得分:1)

您可以使用output ------ CC: 1234 Month: 12 Year: 20 进行操作,请参见SQL CASE

CASE

答案 1 :(得分:1)

是的,您可以使用CASE语句对这些关联进行硬编码,但是是否应该使用另一个问题。

您所描述的是外键关系。标识符0的标签为'Member',标识符1的标签为'Admin',等等。

如果您将这些关联硬编码到它们的标签,则任何更改都需要在您进行硬编码的每段代码中复制。相反,为什么不只拥有另一个角色表呢?

CREATE TABLE user_role (
  id             INT,
  label          VARCHAR(32),
  is_admin       INT,
  is_super_user  INT,
  is_a_moomin    INT,
  PRIMARY KEY (id)
)

然后,您只需使用JOIN即可查找所需的标签或属性...

SELECT
  user_table.*,
  user_role.label   AS user_role_label
FROM
  user_table
INNER JOIN
  user_role
    ON user_role.id = user_table.role_id

此外,通过使用此表,您可以创建外键约束。

ALTER TABLE user_table ADD FOREIGN KEY fk_user_role (user_id) REFERENCES user_role (id)

然后数据库可以确保user_table.role_id中的user_role.id 必须 中的值。

这些都是关系数据库所针对的以及它们如何工作的所有基本方面。不同的数据库对此具有不同的语法。我强烈建议研究它们,并研究使用这些构造的数据库标准实践。

答案 2 :(得分:0)

SQL的“关联方式”是拥有一个名为roles的表,并使用user_role列作为roles的外键从该表中提取数据表。 (非常简化的)表定义如下所示:

Table: roles
------------------
*id:     int(10)
name:    varchar(200)

其中id是该表的主键。然后,要获得具有其角色的用户,请执行以下查询:

SELECT * FROM users, roles WHERE users.user_role = roles.id AND (...any other conditions you have)

您可以在roles表中添加更多角色,并且SQL语句仍然相同。