我正在尝试使用这样的用户信息填充 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 表中的用户数。
如果我像这样将_param绑定(bind)到$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 中。但我似乎无法确切地弄清楚它是什么。
最佳答案
改变
$data = $res->fetch_all();
至
$data = $res->fetch_all(MYSQLI_ASSOC);
这样您将获得关联结果(例如 $row['username']
可以使用)而不是序数结果(例如 $row[1]
)。
关于php - 使用 MySQL 表字段填充 HTML 表的准备语句结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40289513/