我必须编写一个应用程序,在两列中显示一个多列值表(我之前发布了一个问题,但我做了一些研究,这使我的观点更加敏锐)。每个人在表中都有一个条目。任务是在两列表中显示这些列中的值。
列适用于个人注册的主题。 即
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函数返回一个具有列属性的对象..我还没有想出如何访问。对此的任何帮助也将不胜感激。所以回到我的主要问题。上面显示的代码是否足以并排显示列名及其值?谢谢
答案 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')
);