Нужна Обертка для работы с MySQLi

579
.
Здраствуйте форумчани, вот начал изучать эту базу даных, так как в php 5.5 уже обычного MySQL нету, а в место его появился MySQLi, и я подался в поиски нормально, и простенькой обертки для работы с ней. В гугле ничего толкового не нашол. Так что помогите найти чтото. пожалуйста.
.
Think different
Её сами пишут зачастую.
Как вариант - PDO, для меня удобнее чем MySQLi и оберток ненадо.
.
Зачем вообще нужны обертки ?
.
Saniok, Держи:
Незабудь установить обработчик не пойманных исключений set_exception_handler() иначе будет ошибку выбивать ну или просто die вместо throw поставь в конструкторе
<?php

/**
 * Db
 * Provides access to the database
 * @author Screamer <nwotnbm@gmail.com>
 */

class Db extends mysqli
{

    /**
     * @var (array)
     * Contains all errors which were occured
     */
    protected $_debug_messages = array();

    /**
     * Construct
     * Get connection parameters. Connect to mysql server. Setup connection charset
     * Description of connection parameters:
     * @param (string) $host     hostname
     * @param (string) $user     username
     * @param (string) $password password
     * @param (string) $db       database
     * @param (string) $charset  charset
     * @throws (Exception) Unable to connect to MySQL server
     * @return (void)
     */
    public function __construct($host = 'localhost', $user = 'root', $password = '', $db = 'localhost', $charset = 'utf8')
    {
    if (parent::__construct($host, $user, $password, $db) === FALSE) {
    throw new Exception('Unable to connect to MySQL server. Check your configuration file.');
    }
        // Setup charset
        $this->query("SET NAMES " . $charset);
    }

    /**
     * Analog of mysql_result()
     * @param  (mysqli_result) $result result of query
     * @return (string)
     */
    public function result(mysqli_result $result)
    {
        $result = $result->fetch_row();
        return $result[0];
    }

public function query($statement, $type = MYSQLI_USE_RESULT)
    {
        $result = parent::query($statement, $type);
        if (!empty($this->error)) {
            $this->_debug_messages[] = 'Error: ' . $this->errno . ' ' . $this->error . '
' . 'Statement: ' . $statement;
        }
return $result;
}

    public function close()
    {
        parent::close();
        try {
            if (!empty($this->_debug_messages)) {
                // LOG
                throw new Exception('<pre>DB ERROR
' . implode('
--
', $this->_debug_messages) . '</pre>');
            }
        } catch (Exception $e) {
            echo $e->getMessage();
        }
    }

}
.
за комменты прошу не пинать кому глаза режет ибо инглиш на уровне школы знаю Гг
.
Screamer (24.01.2013 / 16:47)
public function result(mysqli_result $result)
а mysqli_result зачем там пишется?
.
Tadochi, http://php.net/manual/ru/langu ... g.php
.
Screamer (05.02.2013 / 16:27)
Tadochi, http://php.net/manual/ru/langu ... g.php
А зачем обёртка нужна что она дает ?
.
Fenixrus, можно подстроить под себя то что нужно, например сделать лог запросов и ошибог что бы по сто раз не писать одно и тоже в куче файлов.
Или же добавить какой то свой функционал используя существующий.
Ну и еще вот пример:
$result = $mysqli->query("SELECT * FROM `test`");
while ($data[] = $result->fetch_assoc());
$result1 = $mysqli->query("SELECT * FROM `test1`");
// при осуществлении второго запроса вылетит ошибка  
// Commands out of sync; you can't run this command now
// Что бы ее избежать нужно вставить перед запросом $result->free(); 
// Или передать вторым параметром в query() (в первом запросе) MYSQLI_USE_RESULT

Для того что бы не писать по сто раз MYSQLI_USE_RESULT или $result->free();
Можно переопределить функцию query() и сделать значение второго параметра по умолчанию MYSQLI_USE_RESULT
для этого как раз и понадобится обертка.
.
Screamer (05.02.2013 / 17:05)
Fenixrus, можно подстроить под себя то что нужно, например сделать лог запросов и ошибог что бы по сто раз не писать одно и тоже в куче файлов.
Или же добавить какой то свой функционал используя сущ
Т.е. В основном для сокращения имени стандартных функции
Всего: 30