2011-03-03 61 views
0

是否可以創建受變量影響的表格?基於變量的表格

喜歡而不是創建一個標準的表。你可以讓用戶創建一個自定義表格。像註冊一樣,我可以在數據庫下執行CREATE TABLE,並且表名受PHP變量的影響?對於表中的字段也是一樣的東西?

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

+8

你不想這樣做。重新考慮你的模型 – 2011-03-03 23:41:33

+0

爲什麼?我需要用戶能夠添加他們需要的字段。有點像讓他們創建一個onlin表單。 – AAA 2011-03-03 23:45:08

+1

看我的答案......工程就是一切 – 2011-03-03 23:51:47

回答

2

這當然有可能,你只需要寫出格式良好的CREATE TABLE/ALTER TABLE查詢。

爲了讓用戶能夠創建自定義字段,不需要自定義/動態創建表。

請考慮創建一個可將用戶創建的字段保存爲行的Custom_Fields表。 例如

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 
+0

給個人用戶添加字段到他們的帳戶的能力。 – AAA 2011-03-03 23:44:37

+2

這可以通過'text'類型字段來實現,該字段可以包含'json_encode'd數組的自定義字段=>值。或者更可擴展的是關係表。 **請**不要給你的用戶創建表格的能力。 – Shad 2011-03-03 23:46:57

+0

你能解釋一下爲什麼不能解釋細節嗎?我對此非常陌生,所以不希望手頭有危機!P – AAA 2011-03-03 23:50:14

2

作爲一個選項,您可以爲每個用戶創建SQLite數據庫並將其放置在用戶分配的目錄中。

+0

不是一個可怕的想法......但爲什麼不使用1個sqlite數據庫? :P – 2011-03-03 23:54:16

+1

我同意你的看法,在你的例子中用小碎片拆分表格更明智一些。但是,如果要隔離每個用戶或應用程序,它可能會變得方便。另外,備份/恢復每個用戶更容易。 – Nazariy 2011-03-04 00:11:07

+0

尼斯反擊!我必須同意。顯然,與其他任何事情一樣,它是基於利弊得來的。 – 2011-03-04 00:44:36

1

這不是你應該如何使用數據庫。如果你這樣設置你的數據庫,你將無法使用你的查詢語言的所有(大部分)函數。

但要創建表(在mysql中我假設你正在使用),請使用CREATE TABLE查詢。

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") 
); 

希望你的想象力可以帶你從這裏開始。