[英]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()
適用於僅引用表中一列列的查詢,返回表達式或從多個表中返回列的查詢。
嘗試這個:
(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.