1. Задавайте здесь вопросы о коде, которые не подходят в другие разделы, такие как:
    Дизайн > Верстка
    PHP > Как сделать на PHP
    Скрыть объявление

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

Тема в разделе "Web Coding", создана пользователем Mendel, 3 мар 2008.

Статус темы:
Закрыта.
Модераторы: latteo
  1. Mendel

    Mendel

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

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

    Описание модуля 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 КБ
      Просмотров:
      16
    Darwinium, Captain и bratok нравится это.
  2. Izrael

    Izrael

    Регистр.:
    12 фев 2008
    Сообщения:
    452
    Симпатии:
    57
    если честно не совсем понял для чего этот модуль, при вызовет ошибка
    Parse error: syntax error, unexpected T_RETURN in Z:\home\localhost\www\db.php on line 115
    что это?
     
    Mendel нравится это.
  3. Mendel

    Mendel

    Регистр.:
    27 янв 2008
    Сообщения:
    217
    Симпатии:
    64
    простите, залил нерабочую версию...
    исправлено.

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

    Izrael

    Регистр.:
    12 фев 2008
    Сообщения:
    452
    Симпатии:
    57
    Опять что не то залил на localhost просто теперь белая страница
    или там в настройках надо прописать данный к соединяемой базе?
     
  5. Mendel

    Mendel

    Регистр.:
    27 янв 2008
    Сообщения:
    217
    Симпатии:
    64
    Это библиотека...
    она и будет белой страницей если ее просто выполнять :)
    какие нужны настройки и как ее использовать написано и в документации и в первом посте, котоый почти полностью повторяет инструкцию внутри архива.
     
  6. postaveche

    postaveche Писатель

    Регистр.:
    22 фев 2008
    Сообщения:
    1
    Симпатии:
    0
    не совсем понял для чего модуль, да и скачать не могу, но название зачетное)))
     
  7. Dogmat

    Dogmat Постоялец

    Регистр.:
    16 фев 2007
    Сообщения:
    122
    Симпатии:
    38
    думаешь "блондинка" поймет подобные названия - sql_sel,sql_ins и т.д. ... учись давать читабельные-семантические названия. чем тебе помешало например хотя бы дописать полностью слово - sql_select, это далеко не лучший вариант названия - но гораздо читабельнее твоего.

    sql_up - третий параметр ... строка .... если ты делаешь на массивах - почему не сохранить стиль? иначе мозг блондинки сломается на первом повороте =)
     
  8. bumer3

    bumer3

    Регистр.:
    10 янв 2008
    Сообщения:
    291
    Симпатии:
    154
    Лично я дернул модуль работы с базой данных из ИПБ меня она там поперла..., там она на основе ООП написаны а это то что мне надо.
     
  9. Mendel

    Mendel

    Регистр.:
    27 янв 2008
    Сообщения:
    217
    Симпатии:
    64
    Хм.. я учту на будущее твое замечание. В принципе я еще года три или четыре назад об этом подумал, но уже было поздно. Действительно подобный врапер не должен базироваться на терминах из sql... :)
    sel а не select было написанно потому что это одна из самых частых функций. и селект банально длинно. это занимает время и лишний источник ошибок. хотя в целом согласен что названия не для блондинок.
    Радует что хоть ктото прочитал сначала описание прежде чем критиковать. :) Огорчает правда что настолько невнимательно как ты. Прочитай описание sql_up и ответь, как ты представляешь себе ее описание (не реализацию а просто описание того как она должна работать) "на массивах" :)
    Очень информативный пост. Огромное спасибо за то что ты сообщил мне такую бесценную информацию, что не один я умею писать подобные библиотеки. ГЫГЫ.
    По поводу ООП - молуль писался под php4 задолго до того когда php5 стал реально доступным на большинстве хостингов, поэтому думаю ясно что про ООП речи не шло. Да и не для блондинок это.
     
Статус темы:
Закрыта.