【问题标题】:Building a HTML table using MySQL/PHP results使用 MySQL/PHP 结果构建 HTML 表
【发布时间】: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); - 您正在为变量分配行数,据我了解,该变量应包含列数。

标签: php mysql


【解决方案1】:

您的基本问题是,您可能从mysql_ 函数转换为mysqli,这很棒!但是没有函数mysqli_field_name() 这个函数只是作为mysql_ 函数存在。

您需要mysqli 中的mysqli_result::fetch_fields() 函数/方法来获取字段名称。

【讨论】:

  • 条件语句中的变量赋值是完全有效的。 "if ($result = $mysqli->query("SELECT * FROM user"))" 等同于 "$result = $mysqli->query("SELECT * FROM user"); if ($result)"
  • @MaciejJaśniaczyk 当然可以,但在这种情况下没有意义。
  • 在这种情况下我没有发现任何问题。如果 $mysqli->query 将返回 false,则不会执行条件语句。
  • @MaciejJaśniaczyk 根据 PHP 文档,mysqli::query() 将返回 falsemysqli_result 对象,但不会返回 true,因此这个 if 条件永远不会为真。
  • " 对于成功的 SELECT、SHOW、DESCRIBE 或 EXPLAIN 查询,mysqli_query() 将返回一个 mysqli_result 对象"。如果将此对象传递给 if 语句,则它的逻辑值为 true,并且将执行代码。如果我错了,请纠正我:)
【解决方案2】:

这应该是布尔运算而不是赋值

if ($result = $mysqli->query("SELECT * FROM user"))

【讨论】:

    【解决方案3】:
    <?php
    $link=mysql_connect("hostname","username","password","dbname");
    $query="select * from table_name";
    $sql=mysql_query($query,$link);
    if(count($sql)>0)
    {
    ?><tr><th></th>
    <?php
    
    while($row=mysql_fetch_array($sql))
        { ?> 
               <tr><td><?php $row['columnname']; ?>
       <?php  } }?>
    

    【讨论】:

    • mysql_* 函数已弃用。不要再使用它们了!
    • 对我来说工作得很好,所以只有我回复了。好的,谢谢您的反馈
    猜你喜欢
    • 1970-01-01
    • 2015-03-13
    • 2018-05-30
    • 2020-11-22
    • 1970-01-01
    • 2014-03-27
    • 2012-09-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多