Простановка префикса в запрос

private function prefix_query($query) {
        if (stristr($query,"INSERT INTO")) {
            $tmp = explode(" VALUES",$query);
            foreach ($this->db_table_names as $table) {
                $tmp[0] = str_replace($table,$this->sql_prefix."_".$table,$tmp[0]);
            }
            $query = implode(" VALUES",$tmp);
        }
        else {
            foreach ($this->db_table_names as $table) {
                $query = str_replace($table,$this->sql_prefix."_".$table,$query);
            }    
        }
        return $query;
    }

в $this->sql_prefix хранится префикс текущей БД, в $this->db_table_names лежит массив с названиями таблиц БД, которые в первый раз достается либо запросом SHOW TABLES FROM 'my_DB', либо вписывается ручками в код, в большинстве случаев этот запрос роли не играет, однако в нагруженных приложениях лишних запросов все-таки стоит избегать.

Функция работает не идеально, потому как приходится следить за названиями таблиц в мускуле, однако отсутствие регэкспов заметно ускоряет работу, а при том, что в большинстве сайтов есть не более 4 таблиц - коллизий практически не возникает.