Перейти к содержимому

Реферальная программа Мегаплана


Класс для работы с БД

#1 surfer

surfer
  • Заблокированные
  • 1 956 сообщений
  • Репутация: 71
0

Отправлено 26 Октябрь 2009 - 13:43

возможно ли такой создать, типа универсальный?

 

 

  • 0

#2 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 26 Октябрь 2009 - 20:34

sc2r2bey, Чтобы работать с разными базами данных? Например чтобы сразу можно было работать и с PostgreeSQL, MySQL и подобными используя один и тот же интерфейс.
Это давно уже реализовано, а с введением PHP5 сделать это стало намного проще, появились абстрактные классы и интерфейсы
Универсальные классы для работы сразу с несколькими БД, или имея один интерфейс, пользуемся разными БД
Существуют такие классы как:
1) AdoDB
2) DAC
3) class.DBI
4) Muze Abstract DB
5) DIOW

Так что выбор относительно большой.
Вот статья по adoDB, но мне она сразу не понравилась с этапа установки, там расписано как подключить полный пакет, а нам бы в разных случаях не хотелось лишнего кода к проекту подключать...
  • 0

#3 surfer

surfer
    Topic Starter
  • Заблокированные
  • 1 956 сообщений
  • Репутация: 71

Отправлено 14 Ноябрь 2009 - 07:23

Подскажите как реализовать функцию для работы с БД, т.е. чтоб она выполняла стандартные операции типа SELECT INSERT UPATE DELETE просто не пойму как будут обрабатываться таблицы у которых разная структура и названия полей, спасибо!
  • 0

#4 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 16 Ноябрь 2009 - 00:09

sc2r2bey, вопрос не понятен. На примере одного из классов или что?

А вообще я бы по вашему вопросу ответил так: "Юзайте в PHP mysql_query() она как раз подходит"
  • 0

#5 gaaarfild

gaaarfild
  • Пользователь
  • 596 сообщений
  • Репутация: 0

Отправлено 17 Ноябрь 2009 - 10:27

Я думаю, он имел ввиду, чтобы в разных СУБД использовать MySQL, а класс чтобы сам определял, какая СУБД и сам переделывал запрос под нее, я правильно понял?
  • 0

#6 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 17 Ноябрь 2009 - 10:35

gaaarfild, сам-то понял что сказал? СУБД - система управления базами данных, которой и является MySQL. А теперь прочти и скажи, чем же ты там собрался управлять:

... чтобы в разных СУБД использовать MySQL ...

Я так понял ты имел ввиду БД? Тогда если ты подключился к серверу, к таблицам можно обращаться так в запросах:
dbName.tableName
И тогдо даже нет надобности выбирать БД с помощью mysql_select_db()

Если ты имел ввиду использование разных СУБД, например postgreeSQL, MySQL, MSSQL и так далее, через один интерфейс, то это уже совсем другое.

Так вот я и пытаюсь узнать у sc2r2bey, что он имел ввиду.
  • 0

#7 surfer

surfer
    Topic Starter
  • Заблокированные
  • 1 956 сообщений
  • Репутация: 71

Отправлено 17 Ноябрь 2009 - 11:31

ограничемся пока MySQL
например при обращении к БД пишется запрос

$sql = "SELECT * FROM table"; 
$select_table = mysql_query($sql);

ну и так далее
и так при каждом запросе и с разными таблицами,
я подумал можно вынести это в функию, передавая необходимые параметры, что не плодить кучу кода :)
  • 0

#8 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 17 Ноябрь 2009 - 13:20

Ну допустим классы используют подобную модель. Там просто передаются параметры в функцию в качестве массива к примеру
$query = array(
"what" => "SELECT",
"fileds" => array(
"pole1",
"pole2"
),
"table" => "table",
"order_by" => array("fields" => array(...), order => "ASC"),
"limit" => array(0,10)
);

dbOblect->methodName($query);


Это пример простейший, структуризация запроса зависит от тебя. Какие передавать параметры в массиве а какие нет зависит от тебя. Метод при обработке массива будет проверять входящие данные и формировать строку запроса. А затем просто выполнит запрос и вернёт результат. Результат может из себя также класс со своими методами(обход ресурса, сборс ключа, сколько всего записей и тд)
  • 0

#9 surfer

surfer
    Topic Starter
  • Заблокированные
  • 1 956 сообщений
  • Репутация: 71

Отправлено 17 Ноябрь 2009 - 13:43

ааа опять классы :)
  • 0

#10 gaaarfild

gaaarfild
  • Пользователь
  • 596 сообщений
  • Репутация: 0

Отправлено 17 Ноябрь 2009 - 15:29

Да мне кажется, меньше кода не получится. И так уже все до минимума сокращено же. Не особо длинно получается.

2ZiToss

Я понял, что сказал. =)
Пишешь на MySQL, переводит в PostgreSQL, или Oracle, или еще что там есть. Я так понял поначалу.
  • 0

robot

robot
  • Пользователь PRO
  • 2 652 сообщений
  • Репутация: 85


Оформление форума – IPBSkins.ru