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 可能是唯一的