php mysql的字段名称为?
问题描述:
我已经创建了一个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>";
}
答
尝试增加你上面一<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()。
我已经创建了一个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>";
}
尝试增加你上面一<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";
我使用了上面的$ col_names => $ col_values,它的工作完美是否有一种简单的方法可以截断最后一个列的名称,因为它的下面一行是空列。 – user1883671
它可以使用一个简单的计数器来完成,并根据您之前设置的'$ col_count'进行检查,因为它是列减去图像的计数。我用样品柜台更新了我的答案。 – Sean
我试过这个计数器,并不断打破页面。我已经尝试在我使用$ col_count = count($ line)-1的代码中重新排列{},有没有一种方法可以通过变量$ col_names来实现?我试过不同的字符串组合,它仍然不起作用 – user1883671
之后,你有将第一行作为关联数组提取,您可以使用array_keys($line)
获取列名。
如果你决定停止使用过时的EXT/MySQL的功能,并切换到转/库MySQLi或PDO_MYSQL,您可以享受不错的功能,如mysqli_stmt::result_metadata()或PDOStatement::getColumnMeta()。
[**请不要在新代码中使用'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
感谢您的建议,但这仅仅是一个课程项目,它只是一个学习体验。此页面仅在大学服务器上。 – user1883671
看来你确实知道字段名称......是否有任何理由不能在循环结果之前手动插入它们? – joequincy