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