如何使用mysql_field_name或mysqli_fetch_field并排显示列名和值

时间:2012-07-21 18:25:29

标签: php

我必须编写一个应用程序,在两列中显示一个多列值表(我之前发布了一个问题,但我做了一些研究,这使我的观点更加敏锐)。每个人在表中都有一个条目。任务是在两列表中显示这些列中的值。

列适用于个人注册的主题。 即

       MATH111,MATH112,ENG111,ENG112

等等。这些列本质上是动态的,因为它们基于excel表中的列标题,这些列标题正被加载到数据库中。鉴于此,我无法“硬编码”我的html中的表名称

          <th>MATH111</th><th>MATH112</th>........

我需要在运行时获取列名称,显示列“ AND ”列中包含的值。表中唯一的固定值是学生的reg_no。 所有其他值都是任意的(包括表中的列数)。

该表的基本结构是:

       id int auto_increment primary key,
       reg_no varchar(25),
       arbitrary col1 int,
       arbitrary col2 int,
       arbitrary col3 int,
       arbitrary col4 int,
       arbitrary  colx....

如果我查询任意col1,我将获得在任意col1代表的课程中获得的分数。

我需要以下面的格式在网页中显示它们:

      echo '<table><tr><th>Course</th><th>Score</th></tr>';

我从表中获取数据的查询是

         $sql="select * from '.$table_name.' where reg_no='.$reg_no.';
    ...................................(blah...)

好的部分是我知道表中的列数。(因为这个图在表创建期间保存)。我做了一点研究,得出了我可以使用'mysql_field_name'函数的发现。或mysqli_fetch_field函数。

mysql_field_name将以这种方式使用(在我看来更容易):

        $result=mysql_query($sql, $link); 
        $row=mysql_fetch_array($result); 

从这里开始......我需要一些提示:

我想显示“ BOTH ”字段名称和字段值。所以我打算这样做。如果我错了,请纠正我。

$ numberofcolumnsintable = $ numberofcolumnsintable ++;

 while(int i=1;i<=$numberofcolumnsintable;$i++)
        (I am starting from the index 1(second column because i do not want to display the reg_no or its data)
     {   echo"<tr><td>".mysql_field_name($result,$i)."</td>"<td>".$result[$i]."</td></tr>";
      }
echo "</table>";

我做得对吗?我更熟悉mysqli函数...但它使用mysqli_fetch_field函数返回一个具有列属性的对象..我还没有想出如何访问。对此的任何帮助也将不胜感激。所以回到我的主要问题。上面显示的代码是否足以并排显示列名及其值?谢谢

1 个答案:

答案 0 :(得分:3)

使用mysql(i)_fetch_assoc代替mysql(i)_fetch_array。这样,您将获得包含列名和值的associative array。然后一个简单的foreach将会这样做:

$rows = mysqli_query('select * from tbl');
foreach($rows as $column => $value) {
    echo $column . ": " . $value . "<br />";
}

$rows可能看起来像这样:

array(
    array('reg_no' => '321', 'col1' => 'foo'),
    array('reg_no' => '654', 'col1' => 'knox')
);