Автор Тема: Работа с запросами  (Прочитано 5573 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Nicki

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 107
  • +0/-0
  • 0
    • Просмотр профиля
    • http://cprazdnikom.ru
Работа с запросами
« : 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());

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

Посоветуйте правильный способ. Как вообще принято работать с запросами?
Поздравления с днем Святого Валентина

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Работа с запросами
« Ответ #1 : 30 Января 2004, 13:09:20 »
Правильные тебя сомнения посещают.

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

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

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

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


ЗЫ. писать отдельный класс для селекта - тоже глупо. уже с тояки зрения ооп :-)

Оффлайн CGVictor

  • теперь местный
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 2511
  • +0/-0
  • 2
    • Просмотр профиля
    • http://cg.net.ru
Работа с запросами
« Ответ #2 : 30 Января 2004, 14:09:57 »
Цитировать
RomikChef:
единственное замечание - запрос всегда надо писать не сразу в функцию, а в переменную ,а потом - в мускул_квери

Обьясни?
LJ: Backslashed life (rss)

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Работа с запросами
« Ответ #3 : 30 Января 2004, 14:20:48 »
переменную легче вывести при отладке

Оффлайн CGVictor

  • теперь местный
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 2511
  • +0/-0
  • 2
    • Просмотр профиля
    • http://cg.net.ru
Работа с запросами
« Ответ #4 : 30 Января 2004, 14:22:29 »
CGVictor
Хм, логично. Просто я отладкой не слишком часто пользуюсь.
/и, наверное, из-за этого так часто торчу на форуме :)/
LJ: Backslashed life (rss)

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Работа с запросами
« Ответ #5 : 30 Января 2004, 14:30:36 »
а что ты делаешь, если запрос не работает.
просто интересно?
угадываешь?

Оффлайн CGVictor

  • теперь местный
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 2511
  • +0/-0
  • 2
    • Просмотр профиля
    • http://cg.net.ru
Работа с запросами
« Ответ #6 : 30 Января 2004, 14:35:51 »
Цитировать
RomikChef:
а что ты делаешь, если запрос не работает.
просто интересно?
угадываешь?

По большому счету, да...
Есть, конечно, phpMyAdmin с его парсерами, но в целом...
LJ: Backslashed life (rss)

Оффлайн гоша

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 85
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Работа с запросами
« Ответ #7 : 30 Января 2004, 15:01:32 »
Nicki

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

будет интересно

Оффлайн Petroffs

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 141
  • +0/-0
  • 0
    • Просмотр профиля
    • http://petroffs.com
Работа с запросами
« Ответ #8 : 30 Января 2004, 15:05:43 »
CGVictor
А это у тебя все сразу получается?
Без ошибочек?
Hello world!

Оффлайн Nicki

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 107
  • +0/-0
  • 0
    • Просмотр профиля
    • http://cprazdnikom.ru
Работа с запросами
« Ответ #9 : 30 Января 2004, 15:31:21 »
Цитировать
RomikChef:
ЗЫ. писать отдельный класс для селекта - тоже глупо. уже с тояки зрения ооп :-)


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

И еще на счет mysql_query(). После самого запроса пишется идентификатор соединения. Это обязательно, или можно опускать? Кчему это может привести?
Поздравления с днем Святого Валентина

Оффлайн Макс

  • vir magni ingenii
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3534
  • +0/-0
  • 2
    • Просмотр профиля
Работа с запросами
« Ответ #10 : 30 Января 2004, 15:41:24 »
Nicki
не знаешь ООП - не используй. Тебя же никто не заставляет.
Тем более что ты толком то и ПХП пока не изучил.

ЗЫ
а почитать можно
Гради Буч "Объектно-Ориентированный анализ и Проектирование" (вроде так)
First learn computer science and all the theory. Next develop a programming style. Then forget all that and just hack. ( George Carrette )

Оффлайн CGVictor

  • теперь местный
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 2511
  • +0/-0
  • 2
    • Просмотр профиля
    • http://cg.net.ru
Работа с запросами
« Ответ #11 : 30 Января 2004, 15:52:45 »
Petroffs
В большинстве случаев, как это ни странно, да. Чаще проблемы логического плана, чем ошибки в написании запросов.
LJ: Backslashed life (rss)

Оффлайн Diesel

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 69
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Работа с запросами
« Ответ #12 : 30 Января 2004, 16:03:44 »
Nicki Со временем, получив немного опыта, ты начнешь понимать что некоторые данные нужно объеденить с методами их обрабатывающими. И ты будешь готов пожертвовать скоростью, во имя красоты, читабельности и универсальности кода. Тогда у тебя родится класс.  Или не будешь готов, тогда он не родится :) Многие программисты вообще ООП не используют.

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28