首页 > 解决方案 > 将 mysqli_num_rows 替换为 fetchColumn PDO >=1

问题描述

我有这个问题。基本上我想用第二个代码替换 if(mysqli_num_rows($result_password)>=1){

<?php
class DataBase {

    private $DB_HOST = DBHOST;
    private $DB_NAME = DBNAME;
    private $DB_USER = DBUSER;
    private $DB_PASS = DBPASS;
    private $PDO;

    public function __construct() {
        $this->PDO = new PDO("mysql:host=".$this->DB_HOST."; dbname=".$this->DB_NAME, $this->DB_USER, $this->DB_PASS, array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));
    }
    public function select($query, $bindings = []) {
        $STH = $this->PDO->prepare($query);
        $STH->execute($bindings);
        $result = $STH->fetchAll(PDO::FETCH_ASSOC);
        return $result ? $result : false;
    }

    public function query($query, $bindings = []){
        $STH = $this->PDO->prepare($query);
        return $STH->execute($bindings);
    }

    public function selectOne($query, $bindings = []) {
        $STH = $this->PDO->prepare($query);
        $STH->execute($bindings);
        $result = $STH->fetch(PDO::FETCH_ASSOC);
        return $result ? $result : false;
    }

}

我试图if(mysqli_num_rows($pw_result )>=1)用这个替换 {:

if ($pw_result = $conn->query($pw_query)) {

    if ($pw_result->fetchColumn() >=1) {

缺少查询:

$pw_query = "SELECT password FROM passwords WHERE password='$valid' AND executed='no'";

但它一直给我这个错误:致命错误:在布尔值上调用成员函数 fetchColumn()

我知道有很多关于这个的帖子,但我已经搜索并找不到它,这就是我在这里的原因,也许很简单。

标签: phpsql

解决方案


您的DataBase::query()方法正在返回 的结果$STH->execute(),它始终是/ truesuccessfalse指示符

如果你想使用查询的结果,函数应该返回$STH


推荐阅读