Php 确定PDO中的语句类型

Php 确定PDO中的语句类型,php,mysql,sql,pdo,pdostatement,Php,Mysql,Sql,Pdo,Pdostatement,长话短说。我有一个处理数据库查询的类,它根据传递给它的语句类型在某个点上分叉。如果它是一个选择,它会做一些事情。如果它是(成功的)插入,更新或删除它会执行其他操作。我依靠PDOStatement::rowCount来确定它,它在我以前的系统上运行良好。但是,在将类移植到另一台服务器后,PDOStatement::rowCount行为发生了变化(它现在返回SELECT语句返回的行数)。我在PHP手册中读到这样的行为可能会发生,而且不一致,取决于数据库 所以我的问题是。是否有另一种简单的方法来确定传

长话短说。我有一个处理数据库查询的类,它根据传递给它的语句类型在某个点上分叉。如果它是一个
选择
,它会做一些事情。如果它是(成功的)
插入
更新
删除
它会执行其他操作。我依靠
PDOStatement::rowCount
来确定它,它在我以前的系统上运行良好。但是,在将类移植到另一台服务器后,
PDOStatement::rowCount
行为发生了变化(它现在返回
SELECT
语句返回的行数)。我在PHP手册中读到这样的行为可能会发生,而且不一致,取决于数据库


所以我的问题是。是否有另一种简单的方法来确定传递给PDO的语句类型?我想我可以编写一个方法来分析语句的语法并将其添加到类中,但也许还有其他方法(内置方法?),在这种情况下,我不应该尝试重新发明轮子。谢谢。

首先设置
PDO::ATTR_ERRMODE
属性

$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
然后

try {

    $stmt = $pdo->prepare($sql);
    $stmt->execute($values);

    try {

        $rows = $stmt->fetchAll();

        /* The SQL was SELECT */

        $count = count($rows);


    } catch (PDOException $e) {

        /* The SQL was INSERT, UPDATE or DELETE */

        $count = $stmt->rowCount();

    }

} catch (PDOException $e) {

    /* Execution Failure */

    $error = $e->getMessage(); 

}

在为准备语句而传递的查询中查找关键字?是的,这是一个显而易见的答案。但我只是想确定如果我旁边有螺丝刀,我是否不会用钳子插入螺丝。