PHP 带有用户设置选项的用户仪表板
PHP user dasboard with user set options
我正在尝试构建一个包含用户设置选项的仪表板,例如用户配置文件 private/public 并添加 "Subjects" 以及保留在数据库中的自己的变量。
我已经为用户准备了 table。一切正常。
具有这些属性:
- user_id
- user_name
- user_email
- user_pass
如果我想让系统用户可以将文本(例如他们最喜欢的颜色)添加到数据库中,而无需为每个注册到系统的新用户创建新的table,我该如何继续。
例如:
CREATE TABLE IF NOT EXISTS user (
user_id SERIAL,
user_name NOT NULL VARCHAR(32),
user_email VARCHAR(254),
user_pass VARCHAR(128) NOT NULL
);
SERIAL
是 BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT
的缩写,您不需要在此处插入值,MySQL 会自动处理。
Official documentation for MySQL 5.5
设置此 table 后,您可以插入行:
INSERT INTO user (user_name, user_email, user_pass)
VALUES ('some name', 'email@domain.com', 'pass');
这听起来像你在问如何创建一个table结构,用户可以在其中定义自己的模式。例如,如果用户正在定义他们自己的 key/value 对信息,那么每个用户都会有所不同。
有几种方法可以采用...
首先,请仔细考虑您正在做的事情。用户体验真的需要这个吗?或者一些自由格式的文本字段就足够了吗?系统中还有什么需要单独跟踪 key/value 对?
您可以使用 a schema-less database,例如任何给定记录都可以具有任何可序列化结构的文档存储。
在关系数据库中,这通常归结为简单地存储 key/value 对。像这样:
Users
----------
id (PK)
username
password
email
UserValues
----------
id (PK)
userid (FK to Users)
key
value
有了这个,任何给定的用户都可以存储任意数量的 key/value 对。如果需要,您可以继续扩展此结构以添加更多用户数据结构。这样做的一个显着缺点是一切都变成 "stringly typed" 这意味着如果值 应该是 数字那么您的代码需要足够健壮以验证该值在任何地方使用,因为在支持数据中,这里的所有内容都将是字符串。
我正在尝试构建一个包含用户设置选项的仪表板,例如用户配置文件 private/public 并添加 "Subjects" 以及保留在数据库中的自己的变量。
我已经为用户准备了 table。一切正常。
具有这些属性:
- user_id
- user_name
- user_email
- user_pass
如果我想让系统用户可以将文本(例如他们最喜欢的颜色)添加到数据库中,而无需为每个注册到系统的新用户创建新的table,我该如何继续。
例如:
CREATE TABLE IF NOT EXISTS user (
user_id SERIAL,
user_name NOT NULL VARCHAR(32),
user_email VARCHAR(254),
user_pass VARCHAR(128) NOT NULL
);
SERIAL
是 BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT
的缩写,您不需要在此处插入值,MySQL 会自动处理。
Official documentation for MySQL 5.5
设置此 table 后,您可以插入行:
INSERT INTO user (user_name, user_email, user_pass)
VALUES ('some name', 'email@domain.com', 'pass');
这听起来像你在问如何创建一个table结构,用户可以在其中定义自己的模式。例如,如果用户正在定义他们自己的 key/value 对信息,那么每个用户都会有所不同。
有几种方法可以采用...
首先,请仔细考虑您正在做的事情。用户体验真的需要这个吗?或者一些自由格式的文本字段就足够了吗?系统中还有什么需要单独跟踪 key/value 对?
您可以使用 a schema-less database,例如任何给定记录都可以具有任何可序列化结构的文档存储。
在关系数据库中,这通常归结为简单地存储 key/value 对。像这样:
Users
----------
id (PK)
username
password
email
UserValues
----------
id (PK)
userid (FK to Users)
key
value
有了这个,任何给定的用户都可以存储任意数量的 key/value 对。如果需要,您可以继续扩展此结构以添加更多用户数据结构。这样做的一个显着缺点是一切都变成 "stringly typed" 这意味着如果值 应该是 数字那么您的代码需要足够健壮以验证该值在任何地方使用,因为在支持数据中,这里的所有内容都将是字符串。