`$result = mysqli_query($conn, $sql);`是否能按时查询出所有用户数据?

问题描述 投票:0回答:2

我找到了一个片段代码:

<?php

$sql = "SELECT * FROM users WHERE first='sof';";

$result = mysqli_query($conn, $sql);

$resultCheck = mysqli_num_rows($result);

var_dump($result);

if($resultCheck > 0){
    while($row = mysqli_fetch_assoc($result)){
        var_dump($row) ;
    }
}

我对上面的代码有疑问:

$result = mysqli_query($conn, $sql);
是否查询出所有用户数据?

或者在

$row = mysqli_fetch_assoc($result)
然后一一查询出来了吗?

php mysqli
2个回答
3
投票

http://php.net/manual/en/mysqlinfo.concepts.buffering.php

查询默认使用缓冲模式。这意味着查询结果立即从 MySQL 服务器传输到 PHP,然后保存在 PHP 进程的内存中。这允许执行其他操作,例如计算行数和移动(查找)当前结果指针。它还允许在处理结果集时在同一连接上发出进一步的查询。缓冲模式的缺点是较大的结果集可能需要相当多的内存。内存将一直被占用,直到对结果集的所有引用都被取消设置或结果集被显式释放,这将在最晚请求结束期间自动发生。术语“存储结果”也用于缓冲模式,因为整个结果集会立即存储。


0
投票

谢谢你。我一直在寻找修复我的代码的方法。我能够将其适应我的旧 MySql 代码。我希望这也对其他人有帮助。

    //$result = mysql_query("SELECT * FROM items ORDER BY name");
    $sql = "SELECT * FROM items ORDER BY name";
    $result = mysqli_query($conn, $sql);
    
    $ix = 0;
    
    //while ($row = mysql_fetch_array($result)) {
      while ($row = mysqli_fetch_assoc($result)) {
        
        $id = $row['id'];
        
      //$history_result = mysql_query("SELECT cost, timestamp FROM history WHERE itemid = '$id' ORDER BY id DESC LIMIT 9");
        $historyresult = "SELECT cost, timestamp FROM history WHERE itemid = '$id' ORDER BY id DESC LIMIT 9";
        $history_result = mysqli_query($conn, $historyresult);
    
        while ($history_row = mysqli_fetch_assoc($history_result)) {
© www.soinside.com 2019 - 2024. All rights reserved.