I don't know why PDOStatement don't return "execution time" and "found rows" so here I created an extended class of PDOStatement with these attributes.Just have to "setAttribute" of PDO's object to $PDO->setAttribute(\PDO::ATTR_STATEMENT_CLASS , ['\customs\PDOStatement', [&$this]]);<?phpnamespace customs;final class PDOStatement extends \PDOStatement { protected $PDO = null; protected $inputParams = []; protected $executionTime = 0; protected $resultCount = 0; protected function __construct(PDO &$PDO) { $this->PDO = $PDO; $this->executionTime = microtime(true); } final public function getExecutionError(int $i = 2) { $executionError = $this->errorInfo(); if (isset($executionError[$i])) return $executionError[$i]; return $executionError; } final public function getExecutionTime($numberFormat = false, $decPoint = '.', $thousandsSep = ',') { if (is_numeric($numberFormat)) return number_format($this->executionTime, $numberFormat, $decPoint, $thousandsSep); return $this->executionTime; } final public function getResultCount($numberFormat = false, $decPoint = '.', $thousandsSep = ',') { if (is_numeric($numberFormat)) return number_format($this->resultCount, $numberFormat, $decPoint, $thousandsSep); return $this->resultCount; } final public function getLastInsertId() { return $this->PDO->lastInsertId(); } final public function bindValues(array $inputParams) { foreach ($this->inputParams = array_values($inputParams) as $i => $value) { $varType = is_null($value) ? \PDO::PARAM_NULL : is_bool($value) ? \PDO::PARAM_BOOL : is_int($value) ? \PDO::PARAM_INT : \PDO::PARAM_STR; if (!$this->bindValue(++ $i, $value, $varType)) return false; } return true; } final public function execute($inputParams = null) { if ($inputParams) $this->inputParams = $inputParams; if ($executed = parent::execute($inputParams)) $this->executionTime = microtime(true) - $this->executionTime; return $executed; } final public function fetchAll($how = null, $className = null, $ctorArgs = null) { $resultSet = parent::fetchAll(... func_get_args()); if (!empty($resultSet)) { $queryString = $this->queryString; $inputParams = $this->inputParams; if (preg_match('/(.*)?LIMIT/is', $queryString, $match)) $queryString = $match[1]; $queryString = sprintf('SELECT COUNT(*) AS T FROM (%s) DT', $queryString); if (($placeholders = substr_count($queryString, '?')) < count($inputParams)) $inputParams = array_slice($inputParams, 0, $placeholders); if (($sth = $this->PDO->prepare($queryString)) && $sth->bindValues($inputParams) && $sth->execute()) $this->resultCount = $sth->fetchColumn(); $sth = null; } return $resultSet; }}?>