Работа с SQL для блондинок (библиотека)

Статус
В этой теме нельзя размещать новые ответы.

Mendel

Гуру форума
Регистрация
27 Янв 2008
Сообщения
215
Реакции
65
кудато пропала моя старая тема, так что выложу заново... тем более что сделал новую версию...
так что пробуем, критикуем... :)

дальше описание библиотеки:

Описание модуля 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.rar
    4,3 KB · Просмотры: 16
если честно не совсем понял для чего этот модуль, при вызовет ошибка
Parse error: syntax error, unexpected T_RETURN in Z:\home\localhost\www\db.php on line 115
что это?
 
если честно не совсем понял для чего этот модуль, при вызовет ошибка
Parse error: syntax error, unexpected T_RETURN in Z:\home\localhost\www\db.php on line 115
что это?

простите, залил нерабочую версию...
исправлено.

Модуль для того чтобы человек незнающий mysql и слабо знакомый с php мог пользоваться базой...
ну и профи тоже может быть удобно.
 
Опять что не то залил на localhost просто теперь белая страница
или там в настройках надо прописать данный к соединяемой базе?
 
Опять что не то залил на localhost просто теперь белая страница
или там в настройках надо прописать данный к соединяемой базе?

Это библиотека...
она и будет белой страницей если ее просто выполнять :)
какие нужны настройки и как ее использовать написано и в документации и в первом посте, котоый почти полностью повторяет инструкцию внутри архива.
 
не совсем понял для чего модуль, да и скачать не могу, но название зачетное)))
 
думаешь "блондинка" поймет подобные названия - sql_sel,sql_ins и т.д. ... учись давать читабельные-семантические названия. чем тебе помешало например хотя бы дописать полностью слово - sql_select, это далеко не лучший вариант названия - но гораздо читабельнее твоего.

sql_up - третий параметр ... строка .... если ты делаешь на массивах - почему не сохранить стиль? иначе мозг блондинки сломается на первом повороте =)
 
Лично я дернул модуль работы с базой данных из ИПБ меня она там поперла..., там она на основе ООП написаны а это то что мне надо.
 
думаешь "блондинка" поймет подобные названия - sql_sel,sql_ins и т.д. ... учись давать читабельные-семантические названия. чем тебе помешало например хотя бы дописать полностью слово - sql_select, это далеко не лучший вариант названия - но гораздо читабельнее твоего.
Хм.. я учту на будущее твое замечание. В принципе я еще года три или четыре назад об этом подумал, но уже было поздно. Действительно подобный врапер не должен базироваться на терминах из sql... :)
sel а не select было написанно потому что это одна из самых частых функций. и селект банально длинно. это занимает время и лишний источник ошибок. хотя в целом согласен что названия не для блондинок.
sql_up - третий параметр ... строка .... если ты делаешь на массивах - почему не сохранить стиль? иначе мозг блондинки сломается на первом повороте =)
Радует что хоть ктото прочитал сначала описание прежде чем критиковать. :) Огорчает правда что настолько невнимательно как ты. Прочитай описание sql_up и ответь, как ты представляешь себе ее описание (не реализацию а просто описание того как она должна работать) "на массивах" :)
Лично я дернул модуль работы с базой данных из ИПБ меня она там поперла..., там она на основе ООП написаны а это то что мне надо.
Очень информативный пост. Огромное спасибо за то что ты сообщил мне такую бесценную информацию, что не один я умею писать подобные библиотеки. ГЫГЫ.
По поводу ООП - молуль писался под php4 задолго до того когда php5 стал реально доступным на большинстве хостингов, поэтому думаю ясно что про ООП речи не шло. Да и не для блондинок это.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху