1

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

这些列是个人已注册的主题。IE。

       MATH111,MATH112,ENG111,ENG112

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

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

我需要在运行时获取列名,显示列名“”其中包含的值。表中唯一的固定值是学生的 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 函数返回一个具有列属性的对象......我还没有弄清楚如何访问。对此的任何帮助也将不胜感激。所以回到我的主要问题。我上面显示的代码是否足以并排显示列名及其值?谢谢

4

1 回答 1

3

使用mysql(i)_fetch_assoc而不是mysql(i)_fetch_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')
);
于 2012-07-21T18:36:46.270 回答