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

时间:2016-04-25 16:52:52

标签: php mysqli

我在下面有一个类函数来缓存用户信息,我得到的错误是

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连接的 - >查询($ sql)函数。

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

2 个答案:

答案 0 :(得分:0)

为什么不使用

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

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

答案 1 :(得分:0)

你在这里既不需要也不需要foreach。

您需要的所有代码都是

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