【问题标题】:Call to a member function fetch_assoc() on a non-object在非对象上调用成员函数 fetch_assoc()
【发布时间】:2015-05-21 03:42:07
【问题描述】:

所以我在 php 中有点新,当我收到以下错误时,我试图这样做: 致命错误:在第 44 行的 .../index.php 中调用非对象的成员函数 fetch_assoc()

我的代码:

if ($_SESSION['uid']){
    $uid = $_SESSION['uid'];
    $result = $db->query("SELECT id,username FROM users WHERE id= '".$uid."'");
    if ($result->num_rows){
        session_destroy();
        echo "please <a href=\"login.php\">Login<a> to your account, or <a href=\"register.php\">Register<a> a new account! \n";
    }else{
        $row = $result->fetch_assoc();
        echo "Welcome back, <a href=\"index.php?act=profile&id=" .$row['id']."\">".$row['username']."</a> !\n";
    }
}
else {
    echo "please <a href=\"login.php\">Login<a> to your account, or <a href=\"register.php\">Register<a> a new account! \n";
}

这是我的第 44 行:

$row = $result->fetch_assoc();

我不明白我做错了什么!

【问题讨论】:

  • 查询无结果,尝试打印查询并手动执行
  • 您开始会话了吗?并且您正在使用mysqli_ 进行连接,对吧?
  • 另外,您的查询可能是成功的,然后您销毁了会话,这就是您的代码翻译的内容。您是在告诉它“如果查询很好并且 num_rows 找到了一行,则销毁会话;为什么?您的 else{...} 失败了,因为您将事情设置后退;有点令人困惑.
  • if ($result-&gt;num_rows){ $row = $result-&gt;fetch_assoc();... } else{ session_destroy(); echo "please...}

标签: php mysql mysqli


【解决方案1】:

您的逻辑是倒退的:当没有任何行时($result-&gt;num_rows 为 0),您调用 fetch_assoc。你应该改为if ($result-&gt;num_rows === 0){

【讨论】:

    猜你喜欢
    • 2016-08-30
    • 2012-09-26
    • 1970-01-01
    • 1970-01-01
    • 2011-07-04
    • 1970-01-01
    • 1970-01-01
    • 2015-05-20
    相关资源
    最近更新 更多