如何解决:无法将stdClass类的对象转换为int

时间:2018-08-24 15:46:11

标签: php pdo

我有这样的错误:

  

类stdClass的对象无法转换为int和Undefined   属性:stdClass :: $ tugas

功能:

public function cekNilai($id_mhs){

    $sql = 'SELECT COUNT(*) from nilai WHERE id_mhs =:id_mhs';
    $query = $this -> conn -> prepare($sql);
    $query -> execute(array('id_mhs'=>$id_mhs));
    if($query){

        $row_count = $query -> fetchObject();

        if ($row_count == 0){

            return false;

        } else {
            echo $row_count->tugas;
            return true;

        }
    } else {

        return false;
    }

}

我的数据库:

enter image description here

2 个答案:

答案 0 :(得分:2)

此对fetchObject()方法的调用将返回一个包含查询值的对象,如果失败则返回FALSE。但是在这里,您将其与一个整数进行比较,这不是您想要的:

$row_count = $query -> fetchObject();
if ($row_count == 0){

另外请注意,您正在查询行数:

$sql = 'SELECT COUNT(*) from nilai WHERE id_mhs =:id_mhs';

这将返回单个值(计数)-不是一行。但是,然后您尝试从对象中提取列,这将不起作用,因为对象中没有tugas值:

return $row_count->tugas;

您可能想要这样的东西:

$row_count = $query->fetchColumn();
return $row_count > 0;

答案 1 :(得分:1)

在执行中缺少“:”。

$query->execute(array(':id_mhs' => $id_mhs));

编辑

public function cekNilai($id_mhs){

    $sql    = 'SELECT tugas from nilai WHERE id_mhs = :id_mhs';
    $query  = $this->conn->prepare($sql);
    $query->execute(array(':id_mhs' => $id_mhs));
    if($query)
    {
      $row_count = $query->fetchObject();

        if ( ! $row_count )
        {
            return false;
        }
        else
        {
            echo $row_count->tugas;
            return true;
        }
    }
    else
    {
        return false;
    }
}