Суть данного класса, писать модули соблюдая синтаксис PDO , чтоб в будущем не перепиливать модули            
                            
                
                        
         
            
            
            
                Сейчас пишу модуль на шестерку, но он попрёт и на семерке. Просто в скрипте в одном месте меняем объявление переменной и с Mysql переключаемся на PDO
Основные методы для использования написал, оттестил на скрипте на чистом PDO и на затычке
потестите , отпишитесь            
                        
         
            
            
            
                третий пост темы с актуальным кодом
Код (+/-)
/**
* Db
* Класс эмуляции PDO для обычного mysql
* создан для дальнейшей совместимости, просто удалив файл и подключить к работе PDO , ничего не должно поломаться
* собраны основные методы (не все) , при желании можно дописать, при нужной необходимости
* @author Koenig <http://johncms.com/users/profile.php?user=6565>
* @version 1.0
*/
class Db {
    
    private $sql = false;
    
    private $result = false;
    
    protected static $instance = null;
    
    public final static function getInstance() {
        if (null === static::$instance) {
            static::$instance = new static();
        }
        
        return static::$instance;
    }
    
    protected function __construct(){}
    
    protected function __clone(){}
    protected function __wakeup(){}
    
    #private function isFetch() {
    #    return preg_match('/select/i', $this->sql) ? true : false;
    #}
    
    public function prepare($sql) {
        $this->sql = trim($sql);
        
        return $this;
    }
    
    public function query($sql) {
        $this->sql = trim($sql);
        $this->result = mysql_query($sql);
        
        return $this;
    }
    
    public function fetch() {
        return mysql_fetch_assoc($this->result);
    }
    
    public function fetchColumn($column_number = 0) {
        $res = $this->fetch();
        
        return $res[$column_number];
    }
    
    public function fetchObject($class = 'stdClass', $args = array()) {
        return mysql_fetch_object($this->result, $class, $args);
    }
    
    public function rowCount() {
        #echo '<pre>' . print_r($this, 1) . '</pre>';
        $res = mysql_fetch_row(mysql_query($this->sql));
        
        return $res[0];
    }
    
    public function fetchAll() {
        $array = array();
        while($res = $this->fetch()) {
            $array[] = $res;
        }
        
        return $array;
    }
    
    public function execute($args = array()) {
        if (sizeof($args)) {
            $args = $this->esc($args);
            $parts = preg_split('#(\?)#u', $this->sql, null, PREG_SPLIT_DELIM_CAPTURE);
            $cnt = sizeof($parts);
            $cntargs = sizeof($args);
            $cntparts = substr_count($this->sql, '?'); 
        
            if ($cntargs != $cntparts) {
                throw new InvalidArgumentException('Wrong number of arguments. Parts = ' . $cntparts . ', Args = ' . $cntargs);
            }
        
            $sql = '';
            for($i = 0; $i < $cnt; $i++) {
                $sql .= (($i % 2) == 0 ? $parts[$i] : str_replace('?', $args[($i/2)], $parts[$i]));
            }
            $sql .= ';';
            
            $this->sql = $sql;
            $res = mysql_query($sql);
        } else {
            $res = mysql_query($this->sql);
        }
        
        #$this->result = $this->isFetch() ? $res : false;
        $this->result = $res;
                
        return $this;
    }
    
    public function lastInsertId() {
        $id = $this->query('SELECT LAST_INSERT_ID()')->fetchColumn();
        
        return $id; 
    }
    
    private function esc($data) {
        if (!is_array($data)) {
            $data = is_int($data) ? $data : '"' . mysql_real_escape_string($data) . '"';
        } else {
            $data = array_map(array($this, 'esc'), $data);
        }
        
        return $data;
    }
    
    public function quote($str) {
        return $this->esc($str);
    }
    
    public function exec($sql) {
        $res = mysql_query($sql);
        
        return mysql_affected_rows($res);
    }
}
               
                        
         
            
            
            
                Что такое PDO?и зачем нужно?            
                        
         
            
            
            
                в гугле забанили что ли?
драйвер это. для работы с различными субд, в т.ч и мускули коий пришел на смену ныне устаревшего и не поддерживаемого мускула            
                        
         
            
            
            
                Было-бы неплохо напичкать двиг всеми костылями что бы модули думали что работают на 7-ке.
Тогда к моменту выхода уже будет немало полностью совместимых модулей.
Что-то вроде пакета эмуляции 7-ки для 6-ки с детальным описанием всех функций и структуры.
И данный класс будет очень кстати ..            
                        
         
            
            
            
                Честно говоря я не понял предназначение данного класса.
Зачем он?
Класс был бы актуален еще на РНР 4, где PDO еще встречался не во всех конфигурациях.
А на сегодня трудно найти такой хостинг, где бы не было PDO.
А если нужен PDO, так его и надо использовать, без каких-либо эмуляторов.
Зачем эмулировать то, что и так есть?
===
З.Ы.
А если хочется сделать эмулятор 7-ки, чтоб уже сейчас на JohnCMS 6 и ниже клепать модули с PDO, то тут надо идти другим путем. Надо параллельно с MySQL подключать PDO, делать эмулятор контейнера (чтоб вызов был такой же как и в 7-ке) и использовать.            
                        
         
            
            
            
                AlkatraZ,  тогда придётся держать два соединения с бд
вся фишка в том, я пишу модуль на PDO
но я скорее её допишу, чем выйдет семёрка (надеюсь я ошибаюсь)
и чтоб не переписывать код, этот костыль будет работать не меняя код            
                        
         
            
            
            
                # Koenig (10.08.2016 / 15:03)
AlkatraZ,  тогда придётся держать два соединения с бд
вся фишка в том, я пишу модуль на PDO
но я скорее её допишу, чем выйдет семёрка (надеюсь я ошибаюсь)
и чтоб не переписывать код, этот костыль б
Логично, надо будет держать 2 соединения, что у нас в пакете совместимости и юзается...
Это неизбежное зло на переходной процесс с использованием старых модулей.            
 
                        
         
            
            
            
                AlkatraZ,  ну в любом случае пусть лежит. если под шестерку модуль запустить, то чисто для одного модуля держать новое соединение не кошерно