Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在同一PHP页面上多次使用mysqli fetch_assoc()和准备好的语句?_Php_Mysqli_Associative Array - Fatal编程技术网

如何在同一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
}