Описание

Класс работы с СУБД MySQL

Данный класс работает с СУБД MySQL, используя расширение PHP MySQL (mysql_connect(), mysql_query() и т.д.).

  • author: Казбек Елекоев <elekoev@binn.ru>
  • version: 4.0
  • copyright: Copyright (c) 2007, OOO "СИБИЭС Групп"

Располагается в /lib/sbMysql.inc.php (строка 34)


	
			
Переменные (список)
integer $mErrno
string $mError
resource $mLinkId
resource $mQueryId
Методы (список)
sbMySql __construct ([string $database = ''], [strign $host = ''], [strign $user = ''], [strign $password = ''])
void __destruct ()
bool changeDB (string $database)
bool checkVersion ()
resource connect (string $database, strign $host, strign $user, [strign $password = ''])
void disconnect ([resource $link_id = false])
int duplicateRow (int $id, string $id_field, string $table)
string escape (string $str, [$is_ident $is_ident = false])
void free ([resource $query_id = false])
string getFieldType (int $offset)
int getInsertId ()
mixed paramQuery (string $query, mixed $arg1,...)
mixed paramQueryPage ( &$total, int $total, string $query, mixed $arg1,...)
int placeholdersCount (string $query)
mixed query (string $query)
Переменные
integer $mErrno = 0 (строка 44)

Номер ошибки MySQL

В случае возникновения ошибки в SQL-запросе или при соединении с БД, в эту переменную записывается номер ошибки. Ошибка попадает в системный журнал.

  • access: public
string $mError = '' (строка 54)

Текст ошибки MySQL

В случае возникновения ошибки в SQL-запросе или при соединении с БД, в эту переменную записывается текст ошибки. Ошибка попадает в системный журнал.

  • access: public
resource $mLinkId = false (строка 73)

Идентификатор активного соединения с MySQL

Хранит идентификатор последнего соединения с БД, возвращенный функцией mysql_connect() в методе connect().

  • access: public
resource $mQueryId = false (строка 82)

Идентифиактор последнего запроса к MySQL

Хранит идентификатор последнего запроса к БД, возвращенный функцией mysql_query() в различных методах класса.

  • access: public
bool $mShowErrors = false (строка 64)

Отображать или нет ошибки MySQL

Если TRUE, то ошибки будут выводится в браузер пользователя, если FALSE - то не будут. В любом случае ошибки всегда записываются в системный журнал.

  • access: public
Методы
Конструктор __construct (строка 140)

Конструктор класса

В конструкторе класса идет подключение к БД по переданным в конструктор реквизитам доступа к БД.

sbMySql __construct ([string $database = ''], [strign $host = ''], [strign $user = ''], [strign $password = ''])
  • string $database: Имя базы данных, к которой производится подключение
  • strign $host: Хост базы данных
  • strign $user: Пользователь, под которым производится подключение
  • strign $password: Пароль пользователя
Деструктор __destruct (строка 151)

Деструктор класса

Закрывает активное соединение с БД.

void __destruct ()
changeDB (строка 215)

Выбор рабочей БД

  • return: TRUE - если ошибок не было и FALSE в случае возникновения ошибки
  • access: public
bool changeDB (string $database)
  • string $database
checkVersion (строка 1119)

Определяет версию MySQL

  • return: TRUE, если версия больше либо равна 4.1, и FALSE в ином случае
  • access: public
bool checkVersion ()
connect (строка 166)

Осуществляет подключение к БД

  • return: Идентификатор соединения или FALSE в случае возникновения ошибки
  • access: public
resource connect (string $database, strign $host, strign $user, [strign $password = ''])
  • string $database: Имя базы данных, к которой производится подключение
  • strign $host: Хост базы данных
  • strign $user: Пользователь, под которым производится подключение
  • strign $password: Пароль пользователя
disconnect (строка 243)

Закрывает соединение с БД

Закрывает соединение с базой данных. Если в качестве параметра передан идентификатор соединения с БД, то закрывается это соединение, иначе соединие, на которое указывает переменная класса mLinkId.

void disconnect ([resource $link_id = false])
  • resource $link_id
duplicateRow (строка 461)

Дублирует запись в таблице

  • return: Значение AUTO_INCREMENT поля новой записи или 0 в случае возникновения ошибки
  • access: public
int duplicateRow (int $id, string $id_field, string $table)
  • int $id: Уникальный идентификатор дублируемой записи (обычно значение AUTO_INCREMENT поля)
  • string $id_field: Название поля таблицы, в котором хранятся значения $id
  • string $table: Название таблицы, запись которой мы хотим продублировать
escape (строка 661)

Экранирует переданную строку в соотв. с правилами СУБД

  • return: Экранированная строка
  • access: public
string escape (string $str, [$is_ident $is_ident = false])
  • string $str: Строка для экранирования
  • $is_ident $is_ident: Экранирует ` двумя `, если TRUE (по умолчанию FALSE)
free (строка 269)

Освобождает память, выделенную под результат запроса

В качестве идентификатора запроса используется либо переданный в функцию идентификатор, либо, если переданный идентификатор не является ресурсом, значение переменной класса mQueryId.

void free ([resource $query_id = false])
  • resource $query_id
getAffectedRows (строка 428)

Возвращает кол-во записей, затронутых предыдущим SQL-запросом.

Для SELECT-запроса это кол-во выбранных из БД записей, для запросов INSERT, UPDATE и DELETE - кол-во записей, затронутых данными запросами.

  • return: Кол-во записей или 0, если предыдущий запрос был неудачным.
  • access: public
int getAffectedRows ()
getFieldType (строка 442)

Возвращает тип поля

Возвращает тип поля, заданного смещением относительно начала таблицы, сформированного SELECT-запросом. Например "int", "real", "string", "blob" и другие.

  • return: Тип поля
  • access: public
string getFieldType (int $offset)
  • int $offset: Смещение относительно начала таблицы, сформированной SELECT-запросом
getInsertId (строка 415)

Возвращает значение, сгенерированное для AUTO_INCREMENT поля предыдущим запросом INSERT

  • return: Значение AUTO_INCREMENT поля или 0, если предыдущий запрос INSERT был неудачным.
  • access: public
int getInsertId ()
paramQuery (строка 624)

Выполняет параметризованный запрос

Важно! Всегда используйте данный метод, поскольку он реализует полную защиту от SQL-инъекций. Метод query() был оставлен для совместимости со старыми версиями модулей и для выполнения запросов без параметров. Возвращаемые значения аналогичны методу query().

В запросах можно использовать следующие макросы:

  • ? - Этот макрос используется в большинстве запросов. Вставляемое на его место значение обрамляется апострофами ('), при этом все служебные символы экранируются.
    1.  $GLOBLAS['sbSql']->paramQuery('UPDATE table SET title=?''Заголовок "новости"');
    2.  // MySQL: UPDATE table SET title='Заголовок \"новости\"';
  • ?a - Этот макрос удобно использовать для составления IN-выражений. Если в качестве параметра передан ассоциативный массив, то макрос заменяется набором пар ключ=значение. Это удобно использовать в UPDATE-запросах.
    1.  $ids array(123);
    2.  $GLOBLAS['sbSql']->paramQuery('SELECT title FROM table WHERE id IN(?a)'$ids);
    3.  // SELECT title FROM table WHERE id IN(1, 2, 3);
    4.  
    5.  $row array('id' => 1'title' => 'Заголовок "новости"');
    6.  $GLOBLAS['sbSql']->paramQuery('UPDATE table SET ?a'$row);
    7.  // MySQL: UPDATE table SET `id`='1', `title`='Заголовок \"новости\"';
  • ?# - Данный макрос заставляет СУБД воспринимать значение как идентификатор. Он также может принимать в качестве значения не только строку, но и массив (список значений). Это очень удобно для формирования INSERT-запросов.
    1.  $GLOBLAS['sbSql']->paramQuery('SELECT ?# FROM table''date');
    2.  // MySQL: SELECT `date` FROM table
    3.  
    4.  $row array('id' => 1'title' => 'Заголовок "новости"');
    5.  $GLOBLAS['sbSql']->paramQuery('INSERT INTO table(?#) VALUES(?a)'array_keys($row)array_values($row));
    6.  // MySQL: INSERT INTO table (`id`, `title`) VALUES ('1', 'Заголовок \"новости\"');
  • ?d - Этот макрос преобразует переданный параметр в целое число, которое вставляется без обрамления апострофами. В случае ошибки конвертирования вставляется 0.
    1.  $GLOBLAS['sbSql']->paramQuery('SELECT title FROM table WHERE id=?d'1);
    2.  // MySQL: SELECT title FROM table WHERE id=1;
  • ?f - Этот макрос преобразует переданный параметр в дробное число, которое вставляется без обрамления апострофами. В случае ошибки конвертирования вставляется 0.
    1.  $GLOBLAS['sbSql']->paramQuery('SELECT title FROM table WHERE id="?f"'1,56);
    2.  // MySQL: SELECT title FROM table WHERE id="1.56";
  • ?n - Подставляемое значение преобразуется в целое число. Если это число равно нулю, то вместо него подставляется NULL, иначе — оно само.
Также возможно использование условных макроподстановок:
  1.  $GLOBLAS['sbSql']->paramQuery('SELECT * FROM table WHERE `id` = ?d { AND `date` > ? }',
  2.                                 $id(isset($_POST['date']$_POST['date'SB_MYSQL_SKIP) );
В данном примере блок AND `date` > ? будет пропущен, если через POST-форму не пришло значение date.

  • return: Двумерный массив для SELECT-запросов или идентификатор запроса. FALSE в случае возникновения ошибки.
  • see: sbMySql::query()
  • access: public
mixed paramQuery (string $query, mixed $arg1,...)
  • string $query: Текст SQL-запрос
  • mixed $arg1,...: Значения макросов в запросе
paramQueryPage (строка 645)

Аналогичен методу paramQuery за исключением того, что в переменную $total записывается общее кол-во записей в таблице

Удобно применять данный метод при использовании пейджирования результатов запроса.

  • return: Двумерный массив для SELECT-запросов или идентификатор запроса. FALSE в случае возникновения ошибки.
  • see: sbMySql::paramQuery()
  • access: public
mixed paramQueryPage ( &$total, int $total, string $query, mixed $arg1,...)
  • int $total: Получает общее кол-во найденных записей (независимо от использования LIMIT)
  • string $query: Текст SQL-запрос
  • mixed $arg1,...: Значения макросов в запросе
  • &$total
placeholdersCount (строка 907)

Возвращает кол-во макросов в запросе

  • return: Кол-во найденных макросов
  • access: public
int placeholdersCount (string $query)
  • string $query: Текст SQL-запроса
query (строка 305)

Выполняет SQL-запрос к базе данных

Если выполняется SELECT-запрос, то возвращается двумерный массив с результатами запроса (порядок столбцов соотв. порядку полей в SELECT-запросе), с помощью метода класса getAffectedRows() можно получить общее кол-во записей, возвращенное запросом. Для всех остальных запросов возвращается идентификатор запроса (результат работы функции mysql_query()). Для запросов INSERT, UPDATE и DELETE с помощью метода класса getAffectedRows() можно получить общее кол-во записей, затронутых запросом. Для INSERT-запроса с помощью метода класса getInsertId() можно получить значение автоинкрементного поля, сгенерированного после запроса.

  • return: Двумерный массив для SELECT-запросов или идентификатор запроса. FALSE в случае возникновения ошибки.
  • see: sbMySql::getAffectedRows()
  • see: sbMySql::getInsertId()
  • access: public
mixed query (string $query)
  • string $query: Текст запроса
Техническая поддержка:
Сайт: http://www.sbuilder.ru/tec_support.php
E-mail: support@sbuilder.ru
Copyright © 2001-2008, ООО "СИБИЭС Групп"
Документация сгенерирована с использованием phpDocumentor