Mendel
Гуру форума
- Регистрация
- 27 Янв 2008
- Сообщения
- 215
- Реакции
- 65
- Автор темы
- #1
кудато пропала моя старая тема, так что выложу заново... тем более что сделал новую версию...
так что пробуем, критикуем...
дальше описание библиотеки:
Описание модуля db.php
======================
Функции модуля:
---------------
Модуль содержит весь типичный SQL код. В нем реализованы большинство
типичных запросов к базе в виде отдельных функций. В остальном коде
мы только вызываем эти функции. Можно больше не заморачиваться о написании
SQL запросов - модуль это сделает сам. При переезде с MySQL на другую СУБД
достаточно внести небольшие изменения в этот модуль. Если Вы не использовали
каких-то специфических функций, то скорее всего переезд на этом и закончится.
Работа модуля:
--------------
Для того чтобы функции модуля могли работать нужно вызвать функцию sql_start.
Обычно она вызывается в том месте проекта где объявляются настройки
используемой базы. Дальше выполняются нужные нам действия с базой при помощи
вызовов функции sql_do (см. ниже) которая вызывается или из других функций
модуля или непосредственно. Заканчиваем работу с базой вызовом функции sql_end.
Ниже функции модуля описанны более подробно.
function sql_start() - Создает соединение с базой, объявляет кодовые таблицы
и т.п. при этом используются уже объявленные в других модулях константы:
DB_HOST - имя хоста где лежит база(обычно равен localhost)
DB_NAME - имя базы данных в которой храним наши данные
DB_USER - имя пользователя базы данных от имени которого мы будем
работать с базой.
DB_PASS - пароль вышеуказанного пользователя.
function sql_end() - Функция закрытия базы... по хорошему ее стоит вызывать
когда с базой больше не работаете. Но если вы забудете ее выполнить
то ничего страшного не случится, php сам закроет соединение. Пользоваться
ли ей это дело стиля.
function sql_do($sql) - основная функция db модуля - на входе получает
SQL запрос т.е. текст инструкции на языке SQL.
на выходе возвращает результат работы SQL запроса:
таблица с возвращаемыми данными
или 1 (TRUE) если у запроса не положено данных (не путать с пустым
результатом имеется ввиду выполнение инструкций которые ничего не
могут возвратить) и при этом все было хорошо (в смысле без ошибок).
В случае ошибки функция "умирает". как правило ошибки базы фатальны
для скрипта, и поэтому нет смысла продолжать его выполнение.
Далее идут функции которые просто формируют SQL запрс по образцу и вызывают
sql_do - они описывают наиболее частые действия с базой. Это упрощает код,
не более... но и не менее. Нет надобности постоянно писать однотипные запросы
достаточно просто вызвать простую функцию. Можно даже и не знать SQL (хотя
это очень желательно.)
function sql_del($tab_name,$where) - (DELETE) - удаляет из таблицы $tab_name все
записи удовлетворяющие условию $where. Если нужно удалить все записи из
таблицы то нужно указать $where="1=1" или другое верное выражение. Я
специально не сделал проверку на пустой запрос (where ='') - пусть
при вызове будет писаться "1=1"вручную. Это предохранит от случайной
"очистки" таблицы. (при пустой строке WHERE () падает с ошибкой).
Пример вызова: sql_del('users','uid=12345').
function sql_ins($tab_name,$data) - (INSERT) - добавляет (вставляет) в таблицу
$tab_name запись с данными описанными в масиве $data. Индексы массива
описывают названия полей таблицы а значения - значения.
Пример вызова функции:
$sql_data = array('login' => 'Mendel', 'name' => 'Maxym', 'sex' => 'm');
sql_ins('users',$sql_data);
функция возвращает номер автоинкремента если таковой есть
в случае неудачиии возращает -1... иногда бывает удобно
не проверять наличие "дупа" а тупо добавлять в базу... ошибка и ладно..
немного кривовато, но зато эфективно.
function sql_up($tab_name,$data,$where) - (UPDATE) - обновляет (изменяет)
запись (или записи) таблицы $tab_name которые удовлетворяют условию
$where. Данные для изменения описаны в массиве $data. Индексы массива
описывают названия полей а значения - новые значения.
Пример вызова функции:
$sql_data = array('login' => 'Mendel', 'name' => 'Maxym', 'sex' => 'm');
sql_up('users',$sql_data,'uid=1');
function sql_sel($tab_name,$where[,$limit[,$offset]]) - (SELECT) - считывает из таблицы $tab_name
данные удовлетворяющие условию $where. На выходе выдает массив записей
где каждая запись это массив, индексом которого являются названия полей
а значения - это их значения.
опциональные параметры - limit это максимальное колво записей
offset - начиная с указанной записи....
Пример вызова функции:
$users=sql_sel('users','id>=10');
function sql_sel1($tab_name,$where) - тоже что и sql_sel но на выходе только
одна запись поэтому возвращает не массив из одного масисива
а просто запись. Это удобно когда нужно считать одну запись.
Пример вызова функции:
$user=sql_sel('users','id=1');
Узнать количество записей - частный случай. считаем колво
элементов массива на выходе. Что можно сделать при помощи count()
Например: count(sql_sel('users',''))
Сама библиотека в атаче
для того чтобы все работало, надо не забыть объявить константы и вызвать sql_start.
так что пробуем, критикуем...
дальше описание библиотеки:
Описание модуля db.php
======================
Функции модуля:
---------------
Модуль содержит весь типичный SQL код. В нем реализованы большинство
типичных запросов к базе в виде отдельных функций. В остальном коде
мы только вызываем эти функции. Можно больше не заморачиваться о написании
SQL запросов - модуль это сделает сам. При переезде с MySQL на другую СУБД
достаточно внести небольшие изменения в этот модуль. Если Вы не использовали
каких-то специфических функций, то скорее всего переезд на этом и закончится.
Работа модуля:
--------------
Для того чтобы функции модуля могли работать нужно вызвать функцию sql_start.
Обычно она вызывается в том месте проекта где объявляются настройки
используемой базы. Дальше выполняются нужные нам действия с базой при помощи
вызовов функции sql_do (см. ниже) которая вызывается или из других функций
модуля или непосредственно. Заканчиваем работу с базой вызовом функции sql_end.
Ниже функции модуля описанны более подробно.
function sql_start() - Создает соединение с базой, объявляет кодовые таблицы
и т.п. при этом используются уже объявленные в других модулях константы:
DB_HOST - имя хоста где лежит база(обычно равен localhost)
DB_NAME - имя базы данных в которой храним наши данные
DB_USER - имя пользователя базы данных от имени которого мы будем
работать с базой.
DB_PASS - пароль вышеуказанного пользователя.
function sql_end() - Функция закрытия базы... по хорошему ее стоит вызывать
когда с базой больше не работаете. Но если вы забудете ее выполнить
то ничего страшного не случится, php сам закроет соединение. Пользоваться
ли ей это дело стиля.
function sql_do($sql) - основная функция db модуля - на входе получает
SQL запрос т.е. текст инструкции на языке SQL.
на выходе возвращает результат работы SQL запроса:
таблица с возвращаемыми данными
или 1 (TRUE) если у запроса не положено данных (не путать с пустым
результатом имеется ввиду выполнение инструкций которые ничего не
могут возвратить) и при этом все было хорошо (в смысле без ошибок).
В случае ошибки функция "умирает". как правило ошибки базы фатальны
для скрипта, и поэтому нет смысла продолжать его выполнение.
Далее идут функции которые просто формируют SQL запрс по образцу и вызывают
sql_do - они описывают наиболее частые действия с базой. Это упрощает код,
не более... но и не менее. Нет надобности постоянно писать однотипные запросы
достаточно просто вызвать простую функцию. Можно даже и не знать SQL (хотя
это очень желательно.)
function sql_del($tab_name,$where) - (DELETE) - удаляет из таблицы $tab_name все
записи удовлетворяющие условию $where. Если нужно удалить все записи из
таблицы то нужно указать $where="1=1" или другое верное выражение. Я
специально не сделал проверку на пустой запрос (where ='') - пусть
при вызове будет писаться "1=1"вручную. Это предохранит от случайной
"очистки" таблицы. (при пустой строке WHERE () падает с ошибкой).
Пример вызова: sql_del('users','uid=12345').
function sql_ins($tab_name,$data) - (INSERT) - добавляет (вставляет) в таблицу
$tab_name запись с данными описанными в масиве $data. Индексы массива
описывают названия полей таблицы а значения - значения.
Пример вызова функции:
$sql_data = array('login' => 'Mendel', 'name' => 'Maxym', 'sex' => 'm');
sql_ins('users',$sql_data);
функция возвращает номер автоинкремента если таковой есть
в случае неудачиии возращает -1... иногда бывает удобно
не проверять наличие "дупа" а тупо добавлять в базу... ошибка и ладно..
немного кривовато, но зато эфективно.
function sql_up($tab_name,$data,$where) - (UPDATE) - обновляет (изменяет)
запись (или записи) таблицы $tab_name которые удовлетворяют условию
$where. Данные для изменения описаны в массиве $data. Индексы массива
описывают названия полей а значения - новые значения.
Пример вызова функции:
$sql_data = array('login' => 'Mendel', 'name' => 'Maxym', 'sex' => 'm');
sql_up('users',$sql_data,'uid=1');
function sql_sel($tab_name,$where[,$limit[,$offset]]) - (SELECT) - считывает из таблицы $tab_name
данные удовлетворяющие условию $where. На выходе выдает массив записей
где каждая запись это массив, индексом которого являются названия полей
а значения - это их значения.
опциональные параметры - limit это максимальное колво записей
offset - начиная с указанной записи....
Пример вызова функции:
$users=sql_sel('users','id>=10');
function sql_sel1($tab_name,$where) - тоже что и sql_sel но на выходе только
одна запись поэтому возвращает не массив из одного масисива
а просто запись. Это удобно когда нужно считать одну запись.
Пример вызова функции:
$user=sql_sel('users','id=1');
Узнать количество записей - частный случай. считаем колво
элементов массива на выходе. Что можно сделать при помощи count()
Например: count(sql_sel('users',''))
Сама библиотека в атаче
для того чтобы все работало, надо не забыть объявить константы и вызвать sql_start.