【发布时间】:2014-07-09 08:29:50
【问题描述】:
我正在尝试从 MySQL 查询构建一个动态 HTML 表(无论列数或行数),但我认为我可能做错了什么,因为它根本不起作用。
我有使用 Oracle 的经验,但我是 MySQL 新手。我试图检查我正在使用的 MySQL/PHP 函数是否存在,我认为是这样。
<?php
$mysqli = new mysqli("localhost", "dbuser", "dbpass", "db");
/* check connection */
if ($mysqli->connect_errno) {
printf("Connect failed: %s\n", $mysqli->connect_error);
exit();
}
/* Select queries return a resultset */
if ($result = $mysqli->query("SELECT * FROM user")) {
/* build html table */
echo "<table class='table '><thread><tr>";
$ncols = mysqli_num_rows($result);
for ($i = 1; $i <= $ncols; $i++) {
$column_name = mysqli_field_name($result, $i);
echo "<th>".$column_name."</th>";
}
echo "</tr></thread><tbody>";
while ($row = mysqli_fetch_array($result, OCI_NUM)) {
echo "<tr>";
for ( $ii = 0; $ii < count($row); $ii++ ) {
echo "<td>" . $row[$ii] . "</td>";
}
echo "</tr>";
}
echo "</tbody></table>";
/* free result set */
$result->close();
}
$mysqli->close();
?>
感谢任何帮助!
史蒂夫
编辑:我按照建议添加了错误报告并得到:
Fatal error: Call to undefined function mysqli_field_name() in connection.php on line 20
【问题讨论】:
-
请解释“根本不起作用”:您是否收到错误消息、空白页、混乱的 HTML 结果……?即使我的 PHP 技能有点生疏,我也可能已经提出了第一个建议:我很确定
mysqli_num_rows实际上并没有使用您使用的查询来计算表的列...mysqli_field_count似乎就是您需要... -
在
$result、$ncols上使用print_r,然后在循环内使用$row。然后,您将看到您必须使用哪些数据,并可以从中继续工作。还要在文档顶部添加error_reporting(E_ALL); ini_set('display_errors', 1);以向浏览器显示错误。让我们知道您得到了什么。 -
我会先修复“线程”标签:)
-
另一件事:$ncols = mysqli_num_rows($result); - 您正在为变量分配行数,据我了解,该变量应包含列数。