php mysql的字段名称为?

php mysql的字段名称为<th>?

问题描述:

我已经创建了一个mysql查询并将结果显示在表中,但希望将来自mysql表的字段或列名作为表头。我想用多个php文件来做这件事,但其中一个有点复杂,因为它使用for循环来显示通过共同字段相互绑定的记录。这里是简单的结果表php mysql的字段名称为<th>?

echo "<table border='1' width='85%' cellpadding='5' align='center'>\n"; 
while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) { 
echo "\t<tr align='center'>\n"; 
foreach ($line as $col_value) { 
echo "\t\t<td align='center'>$col_value</td>\n"; 
} 

echo "<td align='center'><img src=./images/$col_value border='3' ></td>"; 

echo "\t</tr>\n"; 
} 
echo "</table>\n"; 

我不知道在哪里但标签和如何获得mysql列名。我尝试了一些与mysql_field_names并没有运气。这是另一个带for循环的表。

$last_pattern = null; 
echo "<table border='1' width='80%' cellpadding='5' align='center'>\n"; 
while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) { 
$col_count = count($line) - 1; // Subtract 1 because image isn't in a column 
if ($line['PatternName'] !== $last_pattern) { 
if ($last_pattern !== null) { 
    echo "<td><tr align='center'>\n"; 
} 
echo "<tr align='center'>\n "; 
foreach ($line as $col_name => $col_value) { 
    switch ($col_name) { 
    case 'YarnImage': 
    break; 
    case 'PatternImage': 
    echo "<td><image src='images/$col_value' /></td>"; 
    break; 
    default: 
    echo "<td>$col_value</td>"; 
    } 
} 
$last_pattern = $line['PatternName']; 
echo "</tr>\n <tr align='center'><td colspan='$col_count'>\n"; 
} 
$yarn_image = $line['YarnImage']; 
echo "<img src='images/$yarn_image' width='150' height='150' border='3'/>\n"; 
} 
if ($last_image !== null) { 
echo "</td></tr>"; 
} 
+2

[**请不要在新代码中使用'mysql_ *'函数**](http://bit.ly/phpmsql)。他们不再被维护,[弃用过程](http://j.mp/Rj2iVR)已经开始。看到[**红框**](http://j.mp/Te9zIL)?学习[*准备的语句*](http://j.mp/T9hLWi),并使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/ mysqli) - [这篇文章](http://j.mp/QEx8IB)将帮助你决定哪个。如果你选择PDO,[这里是一个很好的教程](http://j.mp/PoWehJ)。 – PeeHaa

+0

感谢您的建议,但这仅仅是一个课程项目,它只是一个学习体验。此页面仅在大学服务器上。 – user1883671

+0

看来你确实知道字段名称......是否有任何理由不能在循环结果之前手动插入它们? – joequincy

尝试增加你上面一<th>循环foreach ($line as $col_name => $col_value)循环

$col_number = 1; // add a counter 
foreach ($line as $col_names => $col_values) { 
    if ($col_number <= $col_count){ // check if counter is >= to $col_count 
    echo "<th>$col_names</th>";} 
    $col_number++;} // increase counter by 1 
foreach ($line as $col_name => $col_value) { 
... //rest of you code 

而且,在你的代码的第7行,你有一个无效的表元素 -

echo "<td><tr align='center'>\n"; 
+0

我使用了上面的$ col_names => $ col_values,它的工作完美是否有一种简单的方法可以截断最后一个列的名称,因为它的下面一行是空列。 – user1883671

+0

它可以使用一个简单的计数器来完成,并根据您之前设置的'$ col_count'进行检查,因为它是列减去图像的计数。我用样品柜台更新了我的答案。 – Sean

+0

我试过这个计数器,并不断打破页面。我已经尝试在我使用$ col_count = count($ line)-1的代码中重新排列{},有没有一种方法可以通过变量$ col_names来实现?我试过不同的字符串组合,它仍然不起作用 – user1883671

之后,你有将第一行作为关联数组提取,您可以使用array_keys($line)获取列名。

如果你决定停止使用过时的EXT/MySQL的功能,并切换到转/库MySQLi或PDO_MYSQL,您可以享受不错的功能,如mysqli_stmt::result_metadata()PDOStatement::getColumnMeta()