[英]Select MySQL row value as column title?
我正在嘗試為CMS做一個可定制和可擴展的配置文件系統。 從用戶的角度來看,它是直截了當的,但對於管理員,我希望所有數據(包括配置文件數據)都是可搜索的。 配置文件字段可以通過“插件”添加,也可以添加新字段以進行搜索。 我不知道我是否正在嘗試用MySQL來完成這項工作,或者我是否完全采用了錯誤的方式。
所以我將用戶存儲在一個表(用戶)中,其中包含id,email,password和access_level列。
然后,我還有另一個表,其中包含配置文件信息(配置文件),分別存儲為user_id,參數和值。 該參數最終可以再次放入一個單獨的表中(因此它不會重復自己),但是現在我會像這樣離開它。
參數和值基本上是配置文件數據。 例如,參數可以是“年齡”,值可以是“ 22”。
我想要嘗試做的是選擇users表,並連接配置文件信息,以便將參數映射到其他列。 這樣就直接從MySQL結束:
id email password access_level age
1 a@a.com ***** 1 22
2 b@b.com ***** 2 25
3 c@c.com ***** 2 25
我整個下午一直在關注數據透視表,但從中可以看出,“列名”是預先定義的。 在這種情況下,我希望“列名稱”來自行本身。
如果不可能通過單個查詢來完成,還有哪些其他方法? 我正在使用PHP,如果最好的方法是通過它來做到這一點。
任何建議將不勝感激。 :)
好吧,如果您需要事先知道列名,可以查詢information_schema
數據庫:
SELECT COLUMN_NAME
FROM information_schema.COLUMNS
WHERE TABLE_NAME='your table'
但是,這將獲得原始列名稱。 如果您在查詢中出現別名,則必須間接獲取它們:
SELECT somefield AS alias1, otherfield AS alias2
FROM ...
接着
$stmt = mysql_query($query);
$first = true;
while($row = mysql_fetch_assoc($stmt)) {
if ($first) {
$column_names = array_keys($row);
... display column names here
$first = false;
}
... output row here
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.