当查询键存在时,删除 rowCount() 之前的 PDO 返回空值


PDO before delete rowCount() returns null, when query key exists

public function deleteComment( $id, $check_author = true ) {
        $q = $this -> database -> prepare( "SELECT `id`, `aid` FROM `addon_comments` WHERE `id` = :id" );
        $q -> execute( array( 'id' => $id ) );
        if( !$q -> rowCount( ) )
            return -1;
        $r      = $q -> fetch( );
        $uid    = $this -> registry -> getClass( 'Users' ) -> isLogged( );
        if( $check_author && $r[ 'aid' ] != $uid )
            return -2;

        $s = $this -> database -> prepare( "DELETE FROM `addon_comments` WHERE `id` = :id OR `parent` = :id" );
        $s -> execute( array( 'id' => $id ) );
        return 1;           
    }

函数返回给我 -1,但行被查询删除。当我评论删除查询时,一切正常(功能返回 1)。我做错了什么?

如果成功选择一行,下面的代码将返回 true:

if( $q -> rowCount( ) )
    return -1;

我建议如果你想检查一个阴性结果并让它返回-1,使用:

if($q->rowCount() < 1)
    return -1;