使用fetchColumn显示记录计数

时间:2015-02-19 04:21:45

标签: php mysql sql database pdo

我在我的数据库中尝试检查选择的大小。我有一个表estado,我想检查这个表是否有记录' TO'如果这个表有这个记录则返回1如果不返回0.要做到这一点我是' m尝试使用fetchColumn()但总是返回0。 我无法理解为什么因为我的表有这个记录所以它应该返回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

    }

2 个答案:

答案 0 :(得分:4)

as @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;
    }

答案 1 :(得分:2)

试试这个

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语句绑定或获取。