Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php显示表格;第1列带有mysql列注释,第2列转置了行结果_Php_Mysql_Arrays_Loops_Information Schema - Fatal编程技术网

php显示表格;第1列带有mysql列注释,第2列转置了行结果

php显示表格;第1列带有mysql列注释,第2列转置了行结果,php,mysql,arrays,loops,information-schema,Php,Mysql,Arrays,Loops,Information Schema,为可能不好的标题道歉-最好以视觉方式显示我的目标: 当用户转到SomeURL.com/test.php?id=101时,我想在页面上显示类似的内容 | Questions | Answers | ---------------------------------- | 1(a) First Name| Pedro | ---------------------------------- | 1(b) Surname | Millers | -

为可能不好的标题道歉-最好以视觉方式显示我的目标:

当用户转到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    |
| COLUMN_COMMENTS |
-------------------
| 1(a) First Name |
-------------------
| 1(b) Surname    |
-------------------
| 2(a) Weight     |
-------------------
在我的表格设置中,我设置了列注释。i、 e.“名字”一栏的评论为“1(a)名字”。要检索所有这些评论,我可以执行另一个查询:

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

| idQuestionnaire | FirstName    | Surname    | Weight    |
-----------------------------------------------------------
| 101             | Pedro        | Millers    | 150lbs    |
| COLUMN_COMMENTS |
-------------------
| 1(a) First Name |
-------------------
| 1(b) Surname    |
-------------------
| 2(a) Weight     |
-------------------

我之所以想用数组/循环而不是硬代码来自动化代码,是因为我使用的实际表有400多个字段,并且字段可能会被修改或添加,所以在这种情况下,我不想继续更改php代码。这似乎是一项非常简单的任务,但我一生都找不到相关的文档化解决方案。

我建议您在结果集中使用mysqli
fetch\u fields()
函数,以获取有关结果集中包含的列的信息,而不是在信息模式中查询视图

fetch\u 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_字段以获得相应的列注释,然后循环遍历answers查询的结果以将每个答案显示在下一个表列中。

我无法理解该链接的意义。究竟什么是选择1作为1,等等?此外,输出不是HTML表格格式。感谢您的提示,但这并不能让我了解实际的解决方案。该链接指向PHP文档。在查询返回结果集后,循环遍历fetch\u字段返回的字段(这将为您提供每个字段的名称,以便您可以输出它,并按名称检索字段值。我没有注意到您实际上需要的是列注释,而不是
column\u name
,正如您在查询
信息\u架构时所指出的那样。COLUMNS
。好的。因此,我将不得不使用信息架构查询。因此,如果我得到如中所示的结果集我的问题是,在所有列注释中,一个如何循环通过该列输出为表列,同时记住相邻列需要是第一个查询的结果集的结果(即“答案”)不幸的是,正如问题中所述,我不想像这样硬编码,因为我的实际表有400多个字段,所有问题文本都已存储在表的列_注释中。