【发布时间】: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->fetch_all(MYSQLI_ASSOC);将返回关联结果。默认是序数列。 -
做过任何基本的调试,比如
var_dump($data),看看你得到了什么?如果数组为空,您的 foreach() 将不会运行。 -
@apokryfos 这行得通。介意将其发布为答案,以便我接受并投票吗?
标签: php html mysql mysqli prepared-statement