簡體   English   中英

php顯示表格; 第一列與mysql列注釋和第二列轉置的行結果

[英]php to display table; column one with mysql column comments and column two transposed row results

不好意思的標題表示歉意-最好以視覺方式顯示我的目標:

當用戶轉到SomeURL.com/test.php?id=101時,我希望在頁面上顯示類似內容

| Questions      | Answers       |
----------------------------------
| 1(a) First Name| Pedro         |
----------------------------------
| 1(b) Surname   | Millers       |
----------------------------------
| 2(a) Weight    | 150lbs        |
----------------------------------

通過查詢mysql數據庫可以實現這一點。 首先:

SELECT * FROM Questionnaire WHERE idQuestionnaire=101;

哪個返回:

| idQuestionnaire | FirstName    | Surname    | Weight    |
-----------------------------------------------------------
| 101             | Pedro        | Millers    | 150lbs    |

在表格設置中,設置了“列注釋”。 例如,對於“名字”列,注釋顯示為“ 1(a)名字”。 要檢索所有這些評論,我可以執行另一個查詢:

SELECT COLUMN_NAMES FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='Questionnaire';

哪個返回:

| COLUMN_COMMENTS |
-------------------
| 1(a) First Name |
-------------------
| 1(b) Surname    |
-------------------
| 2(a) Weight     |
-------------------

我想使用數組/循環而不是硬代碼自動執行代碼的原因是因為我使用的實際表具有400多個字段,並且可以修改或添加字段,所以我不想不必不斷更改php代碼,因為好吧,這發生的時候。 這似乎是一個非常簡單的任務,但我一生無法找到相關的書面解決方案。

我建議您在結果集上使用mysqli fetch_fields()函數,以獲取有關結果集中包含的列的信息,而不是在INFORMATION_SCHEMA中查詢視圖。

fetch_fields()適用於僅引用表中一列列的查詢,返回表達式或從多個表中返回列的查詢。

http://php.net/manual/zh/mysqli.quickstart.metadata.php

嘗試這個:

(SELECT 
 "1(a) First Name" as Questions,
 Firstname as Answers
FROM Questionnaire WHERE idQuestionnaire=101)
 union
(SELECT 
 "1(b) Surname" as Questions,
  Surname as Answers
FROM Questionnaire WHERE idQuestionnaire=101)
 union
(SELECT 
 "2(a) Weight" as Questions,
 Weight as Answers
FROM Questionnaire WHERE idQuestionnaire=101);

最后,解決方案。 Spencer7593吸引了我,但所需的最終代碼如下:

$con=mysqli_connect("localhost","user","password","test");
if (mysqli_connect_errno($con)) {echo "MySQL conn. err:".mysqli_connect_error();}

 $sql = "SELECT column_comment,column_name FROM information_schema.columns  
  WHERE table_name = 'mytablename';";
 $query = mysqli_query($con,$sql) or die(mysql_error());
 $columnArray = array();

 while(($result = mysqli_fetch_array($query, MYSQL_ASSOC))){

 if($result['column_comment'])
  {
  $CurCol = $result['column_comment'];
  }
 else
  {
  $CurCol = "No text stored";
  } 

    $CurName = $result['column_name'];

    $columnArray[$CurName]=$CurCol;

 }

 //echo $columnArray['FirstName']; //test example to return "1(a) First Name"

因此,我遍歷了fetch_fields以獲取相應的列注釋,然后遍歷了答案查詢的結果以在下一表格列中顯示每個答案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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