PDO - Working with table prefixes

后端 未结 1 1410
死守一世寂寞
死守一世寂寞 2021-01-12 06:22

I like to prefix my tables in case I need to install the application to a host with only one database. I was wondering if there is a simple way of working with table prefixe

相关标签:
1条回答
  • 2021-01-12 07:17

    Extending the PDO class is probably the best option.

    class MyPDO extends PDO
    {
        protected $_table_prefix;
        protected $_table_suffix;
    
        public function __construct($dsn, $user = null, $password = null, $driver_options = array(), $prefix = null, $suffix = null)
        {
            $this->_table_prefix = $prefix;
            $this->_table_suffix = $suffix;
            parent::__construct($dsn, $user, $password, $driver_options);
        }
    
        public function exec($statement)
        {
            $statement = $this->_tablePrefixSuffix($statement);
            return parent::exec($statement);
        }
    
        public function prepare($statement, $driver_options = array())
        {
            $statement = $this->_tablePrefixSuffix($statement);
            return parent::prepare($statement, $driver_options);
        }
    
        public function query($statement)
        {
            $statement = $this->_tablePrefixSuffix($statement);
            $args      = func_get_args();
    
            if (count($args) > 1) {
                return call_user_func_array(array($this, 'parent::query'), $args);
            } else {
                return parent::query($statement);
            }
        }
    
        protected function _tablePrefixSuffix($statement)
        {
            return sprintf($statement, $this->_table_prefix, $this->_table_suffix);
        }
    }
    
    0 讨论(0)
提交回复
热议问题