public function prepare($sql, array $driver_options = [])
    {
        try {
            return $this->_pdo->prepare($sql, $driver_options);
        } catch (PDOException $e) {
            // when time out, reconnect
            if ($this->_isTimeout($e)) {

                $this->_closeConnection();
                $this->_connect();

                try {
                    return $this->_pdo->prepare($sql, $driver_options);
                } catch (PDOException $e) {
                    throw $e;
                }

            } else {
                throw $e;
            }
        }
    }
public function prepare($sql, array $driver_options = [])
    {
        try {
            return $this->_pdo->prepare($sql, $driver_options);
        } catch (PDOException $e) {
            // when time out, reconnect
            if ($this->_isTimeout($e)) {

                $this->_closeConnection();
                $this->_connect();

                try {
                    return $this->_pdo->prepare($sql, $driver_options);
                } catch (PDOException $e) {
                    throw $e;
                }

            } else {
                throw $e;
            }
        }
    }
public function prepare ( $ sql , array $ driver_options = [ ] ) { try { return $ this -> _pdo -> prepare ( $ sql , $ driver_options ) ; } catch ( PDOException $ e ) { // when time out, reconnect if ( $ this -> _isTimeout ( $ e ) ) { $ this -> _closeConnection ( ) ; $ this -> _connect ( ) ; try { return $ this -> _pdo -> prepare ( $ sql , $ driver_options ) ; } catch ( PDOException $ e ) { throw $ e ; } } else { throw $ e ; } } }
native prepare, add auto reconnect

@param  string $sql
@param  array $driver_options
@return  \PDOStatement/boolean
@throws  \PDOException
native prepare add auto reconnect