【问题标题】:Prepared Statement Results to Fill HTML table with MySQL Table Fields准备语句结果以使用 MySQL 表字段填充 HTML 表
【发布时间】:2016-10-27 16:10:44
【问题描述】:

我正在尝试用如下用户信息填充 HTML 表格:

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$mysqli = mysqli_connect($host, $username, $password, $db);
$query = "SELECT * from `users`";
$stmt = $mysqli->prepare($query);
$stmt->execute();
$res = $stmt->get_result();
$data = $res->fetch_all();

foreach ($data as $row) 
{
    echo "<tr><td>" . $row['username'] . "</td><td>" . $row['email'] . "</td></tr>";
}

然而,数组索引似乎是空的,因为它导致的空白 HTML 表行数等于 MySQL 表中的用户数。

如果我像这样将参数绑定到 $stmt:

$query = "SELECT * from `users` WHERE userId = ?";
$stmt = $mysqli->prepare($query);
$stmt->bind_param("i", $userId);
$stmt->execute();
$res = $stmt->get_result();
$data = $res->fetch_all();

HTML 表中根本没有创建任何行,这让我相信数组是空的。

我已经使用这个答案中的信息得到了这么多:

SELECT * from SQL table using prepared statement

我想我的问题在于prepare() 参数$query。不过,我似乎无法弄清楚它到底是什么。

【问题讨论】:

  • $res-&gt;fetch_all(MYSQLI_ASSOC); 将返回关联结果。默认是序数列。
  • 做过任何基本的调试,比如var_dump($data),看看你得到了什么?如果数组为空,您的 foreach() 将不会运行。
  • @apokryfos 这行得通。介意将其发布为答案,以便我接受并投票吗?

标签: php html mysql mysqli prepared-statement


【解决方案1】:

改变

$data = $res->fetch_all();

$data = $res->fetch_all(MYSQLI_ASSOC);

这样您将获得关联结果(例如$row['username'] 将起作用)而不是有序结果(例如$row[1])。

【讨论】:

    猜你喜欢
    • 2017-07-30
    • 1970-01-01
    • 2023-04-02
    • 2014-02-14
    • 2015-08-13
    • 2021-08-02
    • 1970-01-01
    • 2018-03-27
    • 1970-01-01
    相关资源
    最近更新 更多