传递给 each() 的 PHP 变量不是一个数组


PHP Variable passed to each() is not an array

>我下面有一个类函数,它缓存用户信息,im得到的错误

如下
Warning: Variable passed to each() is not an array or object in C:'inetpub'wwwroot'application'base'classes'class.user.php on line 67

功能如下。

public function cacheUserInfo() {
        if (!$this->loggedIn())
            return;
        global $autoLoader;
        $userQuery = $autoLoader->getLibrary('database')->query("SELECT motto,look,rank,last_login,block_newfriends FROM `users` WHERE `id` = '" . $_SESSION['user']['id']. "'");
        $userRow = mysqli_fetch_array($userQuery);
        while (list($var, $val) = each($userRow)) {
            $_SESSION['user'][$var] = $val;
        }
    }

数据库库上的查询函数只是 MySQLi 连接的 ->query($sql) 函数。

它正在工作一秒钟,现在它不是... 为什么我会收到此错误?

为什么不直接使用

foreach($userRow as $key => $value)

看起来您的查询可能返回 null。如果是这种情况,也许您应该先检查它是否为 null。

你在这里不需要每一个,也不需要每一个。

您需要的所有代码都只是

$_SESSION['user'] =mysqli_fetch_assoc($userQuery);