PDO执行返回1但没有行受影响吗?

Ete*_*our 0 php mysql pdo class

使用我的PDO删除方法时,我得到一些奇怪的行为,并且希望得到一些答案。出于某种原因,当我执行删除操作(在这种情况下,表为空)时,查询返回1。根据文档,如果未修改任何行,则查询应返回0。这是代码。

protected function dsn() {
    return 'mysql:host=' . $this->host . ';dbname=' . $this->db . ';charset=' . $this->charset;
}

//my PDO attribute options//
protected $options = [
        PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,
        PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
        ];
//I have separate connections for different queries with different permissions
depending on what I need to do//
protected function connectDelete() {
    $dsn = $this->dsn();
    $this->pdo = new PDO($dsn, $this->userDelete, $this->passDelete, $options);

    return $this->pdo;
}

function deleteQuery($query, $values = []) {

    $prepare = $this->connectDelete()->prepare($query);
    $result = $prepare->execute($values);

    return $result;
}
Run Code Online (Sandbox Code Playgroud)

在所有相关代码都被删除的情况下,这里是查询。

require_once $root.'/classes/userDB.php';
$db = new userDB();

$query = "DELETE FROM table WHERE primaryKey = ? AND user_id = ?";
$values = [$pk_id,$user_id];
$result = $db->deleteQuery($query, $values);

echo $result;
returns 1
Run Code Online (Sandbox Code Playgroud)

难道我做错了什么?

编辑#1:
因此,我试图rowCount()查看结果将是什么,并且出现以下错误。

致命错误:在非对象上调用成员函数rowCount()。

看来查询失败了吗?

编辑#2:
这是新函数,它将返回受影响的行。

function deleteQuery($query, $values = []) {

    $prepare = $this->connectDelete()->prepare($query);
    $prepare->execute($values);
    $result = $prepare->rowCount();

    return $result;
}
Run Code Online (Sandbox Code Playgroud)

dec*_*eze 5

PDOStatement::execute

TRUE成功或FALSE失败时返回。

true输出为字符串变成1。这并没有说明删除了多少行,只是查询成功了(即语法正确且执行无误)。如果您想知道受影响的行数,请寻找rowCount