簡體   English   中英

選擇MySQL行值作為列標題?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM