Php 如何检查PDO查询是否有结果?

Php 如何检查PDO查询是否有结果?,php,mysql,pdo,Php,Mysql,Pdo,我们有这个数据库类。如果查询字符串是SELECT..,调用query函数可以正常工作,但它不适用于UPDATE…查询 问题是$stmt->fetchAll(),它不能在更新…上获取所有,这是有意义的 如何判断查询是否可以fetchAllable class DB { public $db = null; public function __construct() { try { $this->db = new PDO('mysql

我们有这个数据库类。如果查询字符串是
SELECT..
,调用
query
函数可以正常工作,但它不适用于
UPDATE…
查询

问题是
$stmt->fetchAll(),它不能在
更新…
获取所有
,这是有意义的

如何判断查询是否可以
fetchAll
able

class DB 
{
    public $db = null;
    public function __construct() { 
        try {
            $this->db = new PDO('mysql:host=' . DBHOST . ';dbname=' . DBNAME, DBUSER, DBPWORD);
            $this->db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
            $this->db->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, 1);
        } catch(PDOException $e) {

        }
    }

    public function query( $query = "" , $params = [] ) {
        $stmt = $this->db->prepare( $query );

        foreach( $params as $param ) {
            $stmt->bindParam($param[0], $param[1]);
        }

        $stmt->execute();

        $records = $stmt->fetchAll(); //How can I tell if I can do this.
        return $records;

        return true;
    }
}

谢谢你的帮助。

实际上,这是一个很好的问题。而且功能也很好。我强烈建议让这个函数返回
$stmt
,而不是fetchAll()。你会惊讶于这个功能会变得多么灵活!更不用说它也能解决你目前的问题。请参阅我的文章的示例部分,看看如果函数返回$stmtt,这个函数的使用有多大不同,实际上这是一个非常好的问题。而且功能也很好。我强烈建议让这个函数返回
$stmt
,而不是fetchAll()。你会惊讶于这个功能会变得多么灵活!更不用说它也能解决你目前的问题。请参考我的文章中的示例部分,看看这个函数在返回$stmt时可以有多大的不同用途