Gro*_*ogu 3 php mysqli associative-array
有没有一种方法可以fetch_assoc()在同一页面上使用准备好的语句多次?
$data = $conn->prepare("SELECT * FROM some_table WHERE id=?");
$data->bind_param('i',$id);
$data->execute();
$result = $data->get_result();
Run Code Online (Sandbox Code Playgroud)
我希望能够fetch_assoc()在同一页面上以多种不同的方式使用任意多次。如果我想循环两次,我应该能够做到。如果我想循环并执行一次获取,我也应该能够做到这一点。现在看来,一旦fetch_assoc()使用一次,就不能在同一页面上再次使用。
在一个循环中
while($row = $result->fetch_assoc()){
...
}
Run Code Online (Sandbox Code Playgroud)
单次取
$user = $result->fetch_assoc();
$first_name = $user['first_name'];
Run Code Online (Sandbox Code Playgroud)
您可以mysqli_result::data_seek在每次使用后重置结果指针,以便可以多次循环结果。例如:
while($row = $result->fetch_assoc()){
...
}
$result->data_seek(0);
while($row = $result->fetch_assoc()){
...
}
Run Code Online (Sandbox Code Playgroud)
虽然在技术上可以(尼克展示了如何)倒带该mysqli_result对象,但许多人发现它使用起来很麻烦mysqli_result。将所有记录提取到 PHP 数组中并使用多维数组而不是对象要容易得多mysqli_result。
$result = $data->get_result()->fetch_all(MYSQLI_ASSOC);
Run Code Online (Sandbox Code Playgroud)
这样你就可以用这个数组做任何你想做的事情。你可以过滤,你可以多次循环,你可以使用PHP中所有标准的数组函数。
$resultsFiltered = array_filter($results, fn($e) => $e['someColumn']>200);
foreach($resultsFiltered as $row) {
// only records with someColumn > 200
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1776 次 |
| 最近记录: |