如何在同一PHP页面上多次使用mysqli fetch_assoc()和准备好的语句?
是否有一种方法可以在同一页上使用准备好的语句多次使用如何在同一PHP页面上多次使用mysqli fetch_assoc()和准备好的语句?,php,mysqli,associative-array,Php,Mysqli,Associative Array,是否有一种方法可以在同一页上使用准备好的语句多次使用fetch\u assoc() $data = $conn->prepare("SELECT * FROM some_table WHERE id=?"); $data->bind_param('i',$id); $data->execute(); $result = $data->get_result(); 我希望能够在同一页上使用fetch_assoc(),使用的次数可以根据我的
fetch\u assoc()
$data = $conn->prepare("SELECT * FROM some_table WHERE id=?");
$data->bind_param('i',$id);
$data->execute();
$result = $data->get_result();
我希望能够在同一页上使用fetch_assoc()
,使用的次数可以根据我的需要而定,使用的方式也可以有多种。如果我想循环两次,我应该能够做到。如果我想循环并执行一次提取,我也应该能够这样做。现在看来,一旦fetch\u assoc()
被使用一次,它就不能在同一页上再次使用
在循环中
while($row = $result->fetch_assoc()){
...
}
单次提取
$user = $result->fetch_assoc();
$first_name = $user['first_name'];
您可以使用在每次使用后重置结果指针,以便可以多次循环结果。例如:
while($row = $result->fetch_assoc()){
...
}
$result->data_seek(0);
while($row = $result->fetch_assoc()){
...
}
虽然技术上可以(Nick演示了如何)回放
mysqli_结果
对象,但许多人发现使用mysqli_结果
非常麻烦。将所有记录提取到PHP数组中并使用多维数组而不是mysqli\u result
对象要容易得多
$result = $data->get_result()->fetch_all(MYSQLI_ASSOC);
这样,您就可以使用此阵列执行任何操作。您可以进行过滤,可以多次循环,可以使用PHP中的所有标准数组函数
$resultsFiltered = array_filter($results, fn($e) => $e['someColumn']>200);
foreach($resultsFiltered as $row) {
// only records with someColumn > 200
}