Mysqli 使用准备好的语句获取数组
Mysqli fetch array with prepared statement
我正在准备我的 mysql 查询以尝试提高安全性,但是当我尝试获取准备好的语句的结果时遇到问题。我可以成功获取一行数据,但是我没有成功获取一组数据。我所做的所有研究都提供了一些示例,这些示例要么不起作用,要么过于复杂。
我的当前代码
if ($stmt = $dbc->prepare("SELECT city FROM users WHERE id = ? LIMIT 1")) {
$stmt->bind_param('i', $id); // Bind id to parameter.
$stmt->execute(); // Execute the prepared query.
$stmt->store_result();
// get variables from result.
$stmt->bind_result($city);
$stmt->fetch();
}
这是我目前的代码,只有 returns 个结果。
好吧,让我们看看,
首先,您将 select 查询限制为 1 个结果,这就是为什么它只有 returning 1 个结果的原因,
其次,您没有使用 while 循环来遍历您的结果,试试这个:
$stmt = $dbc->prepare("SELECT city FROM users WHERE id = ?");
$stmt->bind_param('i', $id);
$stmt->execute();
$stmt->store_result();
$stmt->bind_result($city);
while($stmt->fetch()){
echo $city;
}
但请记住,您的查询可能只会返回 return 1 个值,因为 ID 可能是唯一的
我正在准备我的 mysql 查询以尝试提高安全性,但是当我尝试获取准备好的语句的结果时遇到问题。我可以成功获取一行数据,但是我没有成功获取一组数据。我所做的所有研究都提供了一些示例,这些示例要么不起作用,要么过于复杂。
我的当前代码
if ($stmt = $dbc->prepare("SELECT city FROM users WHERE id = ? LIMIT 1")) {
$stmt->bind_param('i', $id); // Bind id to parameter.
$stmt->execute(); // Execute the prepared query.
$stmt->store_result();
// get variables from result.
$stmt->bind_result($city);
$stmt->fetch();
}
这是我目前的代码,只有 returns 个结果。
好吧,让我们看看,
首先,您将 select 查询限制为 1 个结果,这就是为什么它只有 returning 1 个结果的原因,
其次,您没有使用 while 循环来遍历您的结果,试试这个:
$stmt = $dbc->prepare("SELECT city FROM users WHERE id = ?");
$stmt->bind_param('i', $id);
$stmt->execute();
$stmt->store_result();
$stmt->bind_result($city);
while($stmt->fetch()){
echo $city;
}
但请记住,您的查询可能只会返回 return 1 个值,因为 ID 可能是唯一的