使用 fetchColumn 显示记录数

Displaying record count with fetchColumn

我正在尝试检查数据库中 select 的大小。我有一个tableestado,我想检查这个table是否有记录'TO',如果这个table有这个记录return 1如果不是 return 0。为此我正在尝试使用 fetchColumn() 但总是 return 0。 我不明白为什么因为我的 table 有这条记录所以它应该 return 1.

我该怎么做?

public function isEstadoExist($estado){
        $stm = $this->conexao->prepare("SELECT * FROM estado t1 WHERE t1.estado = ?");
        $stm->bindParam(1, $estado);
        $existe = $stm->fetchColumn();
        echo $existe; //always display 0

    }

如@Fred -ii- 所说,你必须调用 $stm->execute,而我修改了 SQL。

 public function isEstadoExist($estado){
            $stm = $this->conexao->prepare("SELECT count(*) as cant FROM estado t1 WHERE t1.estado = ?");
            $stm->bindParam(1, $estado);
            $stm->execute();
            $existe = $stm->fetchColumn();
            echo $existe;
    }

试试这个

public function isEstadoExist($estado){

    $query = sprintf("SELECT * FROM estado t1 WHERE t1.estado = %s", filter_var($estado, FILTER_SANITIZE_STRING));
    # Be careful the value of the column "estado" might have different case than that of "$estado"

    $stm = $this->conexao->select($query);

   return ($stm->rowCount()== 1) ? 1 : 0;
   # I prefer "return ($stm->rowCount()) ? true : false;"
}

如果您只是想检查记录是否存在,则无需绑定或从 PDO 语句中获取。