Всем привет!

В процессе написания кода обнаружилась одна странность. Если работать с MySQL, то вполне спокойно работает такой код:
PHP код:

class SQL {
public function 
query($text) {
    
$this->mysql_query($text);
    return 
$a;
}

public function 
read() {
  if (!
is_resource($this->a))
     return 
false;

 return 
mysql_fetch_array($this->a);
}

Т.е. при условии что идёт выборка SELECT и она правильная, в одной функции можно было сделать запрос, в другой - его проанализировать.

Если повторить тоже самое с PDO, возникает ощущение, что PDOStatement просто обнуляется. Как будто бы PHP "не помнит" результаты запроса от функции к функции. Хотя они сохраняются в переменной класса и она имеет тип PDOStatement.

В PDO имеем вот такую функцию запроса:

PHP код:
 public static function query($text) {
        if (empty(
$text)) {
            
$text Db::$query;
        }
        
        if (!
is_object(DB_PDO_MySQL::$pdo))
            throw new 
Exception("PDO connect was unsuccessful");
        
        
self::$query_id DB_PDO_MySQL::$pdo->query($text);
        
        
        
        return 
self::$query_id;
    } 
а в fetch:

PHP код:
public static function fetch() {
        
        
    if (!
is_object(DB_PDO_MySQL::$query_id))
        throw new 
Exception("Cannot analyze non-object variable");
    
    
$cnt DB_PDO_MySQL::getRowCount();
    
    
$pdo_statement =   DB_PDO_MySQL::$query_id;
    
    for (
$i 0$i $cnt$i++) {    
        
        
$dbr $pdo_statement->fetch();
        
        
        
yield $dbr;
    } 
Как бы ничего не выдаёт. Точнее выдаёт....
на запрос

PHP код:
print_r(DB_PDO_MySQL::getTables()); 
PHP код:
public static function getTables($dbname '') {   
    if(empty(
$dbname))
        
$dbname Db::$connection_data['dbname'];
    
    if (!
DB_PDO_MySQL::dbExists($dbname))
        throw new 
Exception("Database $dbname does not exist");
    
    
$str 'SHOW TABLES FROM ' $dbname;
    
$q DB_PDO_MySQL::query($str);
    
$var 'Tables_in_'.$dbname;
    
$tables = array();
    
    
    foreach (
DB_PDO_MySQL::fetch() as $value)
        
$tables[] = $value;
        echo 
$value;
    
    
    return 
$tables;
    

выдаёт пустой массив из 7 элементов. Я этой функцией запрашиваю список таблиц в базе - их 7. Однако имена не выдаются. Я понимаю, что если использовать нативную функцию PDOStatement->fetch() то всё отлично. Но мне хотелось именно раскидать это по двум методам.

Извините если сумбурно написал, задавайте вопросы, поясню, что к чему.