Forum Webscript.Ru

Программирование => PHP => Тема начата: Nicki от 30 Января 2004, 12:56:06

Название: Работа с запросами
Отправлено: Nicki от 30 Января 2004, 12:56:06
Как будет правильнее организовать работу с запросами к MySQL?

Сейчас у меня запрос вписывается прямо в функцию mysql_query(), т.е. так:

$result = mysql_query("SELECT col1,col2,col3 FROM table WHERE col4 =".$x." AND col6=".$y)

Но, иногда в туторах мелькают ссылки на классы для работы с запросами. Может работать с запросами
правильнее при помощи классов. Поэтому, я начал было делать класс для работы с запросами,
пока только для SELECT\'а. Теперь, у меня получается что то вроде этого:

// предварительно я передаю данные о запросе в класс
$dbSelect->selData["table"] = "table";
$dbSelect->selData["cols"] = "col1,col2,col3";
$dbSelect->selData["where"] = "col4 =".$x." AND col6=".$y;

// дальше, при необходимости, в том же духе идут "groupBy", "orderBy" и "limit"
// а в функции mysql_query() стоит вызов метода класса (т.е. из того самого класса для работы с запросами)
// в результате возвращается запрос, составленный из переданных в класс данных

$result = mysql_query($dbSelect->createQuery());

Но меня что-то стали посещать сомнения о рациональности такого способа. По моему он довольно
тормозной. Ведь для того, чтбы составить запрос, нужно передать в класс данные по запросу,
вызвать метод из класса, который, в конечном итоге, вернет готовый запрос. А перед этим, нужно еще передать
экземпряр объекта в функцию из которой будет вызываться метод класса. ... блин, как все запутано.

Посоветуйте правильный способ. Как вообще принято работать с запросами?
Название: Работа с запросами
Отправлено: Меняздесьдавнонет от 30 Января 2004, 13:09:20
Правильные тебя сомнения посещают.

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

писать генератор селектов - глупо.
Имеет смысл писать генератор инсетров и апдейтов - там много рутинной работы.
я, кстати, совсем недавно на этом форуме написал прекрасный пример для составления запроса апдейта. Можешь посмотреть

А с селектами ты теряешь ОЧЕНЬ важное качество языка SQL - читабельность.

единственное замечание - запрос всегда надо писать не сразу в функцию, а в переменную ,а потом - в мускул_квери


ЗЫ. писать отдельный класс для селекта - тоже глупо. уже с тояки зрения ооп :-)
Название: Работа с запросами
Отправлено: CGVictor от 30 Января 2004, 14:09:57
Цитировать
RomikChef:
единственное замечание - запрос всегда надо писать не сразу в функцию, а в переменную ,а потом - в мускул_квери

Обьясни?
Название: Работа с запросами
Отправлено: Меняздесьдавнонет от 30 Января 2004, 14:20:48
переменную легче вывести при отладке
Название: Работа с запросами
Отправлено: CGVictor от 30 Января 2004, 14:22:29
CGVictor
Хм, логично. Просто я отладкой не слишком часто пользуюсь.
/и, наверное, из-за этого так часто торчу на форуме :)/
Название: Работа с запросами
Отправлено: Меняздесьдавнонет от 30 Января 2004, 14:30:36
а что ты делаешь, если запрос не работает.
просто интересно?
угадываешь?
Название: Работа с запросами
Отправлено: CGVictor от 30 Января 2004, 14:35:51
Цитировать
RomikChef:
а что ты делаешь, если запрос не работает.
просто интересно?
угадываешь?

По большому счету, да...
Есть, конечно, phpMyAdmin с его парсерами, но в целом...
Название: Работа с запросами
Отправлено: гоша от 30 Января 2004, 15:01:32
Nicki

http://dklab.ru/chicken/nablas/30.html

будет интересно
Название: Работа с запросами
Отправлено: Petroffs от 30 Января 2004, 15:05:43
CGVictor
А это у тебя все сразу получается?
Без ошибочек?
Название: Работа с запросами
Отправлено: Nicki от 30 Января 2004, 15:31:21
Цитировать
RomikChef:
ЗЫ. писать отдельный класс для селекта - тоже глупо. уже с тояки зрения ооп :-)


Ромик, а где можно почитать об ООП. Я очень посредственно представляю себе принципы ООП программинга, изучал их, только по учебникам PHP, и то, там только вскольз. А это, насколько я понимаю, одино из важнейших направлений в программировании вообще.

И еще на счет mysql_query(). После самого запроса пишется идентификатор соединения. Это обязательно, или можно опускать? Кчему это может привести?
Название: Работа с запросами
Отправлено: Макс от 30 Января 2004, 15:41:24
Nicki
не знаешь ООП - не используй. Тебя же никто не заставляет.
Тем более что ты толком то и ПХП пока не изучил.

ЗЫ
а почитать можно
Гради Буч "Объектно-Ориентированный анализ и Проектирование" (вроде так)
Название: Работа с запросами
Отправлено: CGVictor от 30 Января 2004, 15:52:45
Petroffs
В большинстве случаев, как это ни странно, да. Чаще проблемы логического плана, чем ошибки в написании запросов.
Название: Работа с запросами
Отправлено: Diesel от 30 Января 2004, 16:03:44
Nicki Со временем, получив немного опыта, ты начнешь понимать что некоторые данные нужно объеденить с методами их обрабатывающими. И ты будешь готов пожертвовать скоростью, во имя красоты, читабельности и универсальности кода. Тогда у тебя родится класс.  Или не будешь готов, тогда он не родится :) Многие программисты вообще ООП не используют.