基于变量的表

时间:2011-03-03 23:39:17

标签: php mysql database

是否可以创建受变量影响的表?

而不是创建标准表。您可以让用户创建自定义表。像注册一样,我可以在数据库下执行CREATE TABLE,并且表的名称受PHP变量的影响吗?对于表中的字段也一样吗?

例如,表格为$username.table,表格中的字段为$username_field

4 个答案:

答案 0 :(得分:3)

  

为什么呢?我需要用户能够添加他们需要的字段。有点像让他们创建一个onlin表单

然后,您需要设计数据库以实现此目的。不要懒惰并为表单字段创建表。这不仅是安全风险,也不会很好地扩展。这是一个非常糟糕的例子,说明如何设计基于表的系统来处理动态表单生成。

DROP TABLE "main"."form";
CREATE TABLE "form" (
"id"  INTEGER NOT NULL,
"name"  TEXT NOT NULL,
PRIMARY KEY ("id")
);
DROP TABLE "main"."form_field";
CREATE TABLE "form_field" (
"form"  INTEGER NOT NULL,
"id"  INTEGER NOT NULL,
"name"  TEXT NOT NULL,
PRIMARY KEY ("form", "id")
);

希望你的想象能带你从这里来。

答案 1 :(得分:2)

这当然是可能的,您只需要撰写格式良好的CREATE TABLE / ALTER TABLE查询。

为了让您的用户能够创建自定义字段,无需自定义/动态创建表格。

请考虑创建一个Custom_Fields表,该表可以将用户创建的字段保存为行。 e.g。

User Table
| userid | username |

Custom Field Table
| fieldid | userid | field_name | field_value

Get My Custom Fields/Values:
SELECT `field_name`,`field_value` FROM `custom_fields` WHERE `userid`=$myUserId

答案 2 :(得分:2)

作为一个选项,您可以为每个用户创建SQLite数据库,并将其放在用户指定的目录中。

答案 3 :(得分:1)

这不是你应该如何使用数据库。如果您像这样设置数据库,则无法使用查询语言的所有(大多数)函数。

但是要创建表(在mysql中我假设你正在使用它),请使用CREATE TABLE查询。