致命错误:在非对象中调用成员函数data_seek()

时间:2013-11-25 17:25:33

标签: php mysql sql mysqli

我一直收到这条消息, 我怀疑我的SQL查询中有错误,虽然我对php和sql缺乏经验,所以我的怀疑可能不是很有用。

  public function verify_emp_credentials ($user)
    {
          $user= $this->real_escape_string($user);

          $result = $this->query("SELECT 1 FROM eddy WHERE id =" . $user);

           return $result->data_seek(0); //this is the line referenced
    }

我要做的是验证从html表单传递的输入, 匹配数据库上的记录.. 感谢任何反馈 谢谢。

3 个答案:

答案 0 :(得分:1)

确保查询返回有效的结果集。

public function verify_emp_credentials($user) {
    $user = $this->real_escape_string($user);
    if ($result = $mysqli->query('SELECT 1 FROM eddy WHERE id = ' . $user)) {
        $data = $result->data_seek(0);
        $result->close();
        return $data;
    }
    return FALSE;
}

我也不知道你的查询是否有效。您是否首先测试它以确保它返回有效结果?

答案 1 :(得分:1)

您的代码存在很多错误,因此编写一个全新的代码比修复当前代码更简单。

一些亮点:

  1. 使用PDO,而不是mysqli。
  2. 请勿从db API类扩展应用程序类
  3. 使用准备好的陈述。
  4. 请勿使用您不知道的功能。
  5. 所以,做吧

    public function verify_emp_credentials ($user)
    {
        $stmt = $this->db->prepare("SELECT 1 FROM eddy WHERE id = ?");
        $stmt->execute([$user]);
        return $stmt->fetchColumn(); 
    }
    

答案 2 :(得分:0)

检查你的"字符集" 。我认为在创建表时它有所不同,而在发送查询时则不同。