Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Компоновщик MYSQL запросов 
:(
    Опции темы
maxipub
Дата 2.5.2014, 10:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 517
Регистрация: 22.10.2009

Репутация: нет
Всего: 1



Добрый день!

Ребята, подскажите, какие есть инструменты для сабжа?

Предположим, у нас есть некий запрос. Скажем, это форум, и запрос выводит список пользователей, которые оставляли сообщения в определенном разделе форума. Это наш исходных запрос.

Далее, на страничке размещаются дополнительные фичи, которые уточняют этот исходный запрос, например, все тот же "вывод списка пользователей, которые оставляли сообщения в определенной разделе форума":

- за последний месяц;
- эти сообщения - новые темы;
- сортировать по дате сообщения;
- сортировать по дате обновления топиков с этими сообщениями.

И т.д., иными словами, имеем исходный запрос, который не изменяется, а дополняется некоторыми условиями. Можно сделать ряд однотипных запросов, которые будут срадабывать по условию... но хотелось бы как-то красивее. Думаю, должны существовать некие компоновщики запросов?

За терминологию и возможное невежество не судите строго, самоучка. smile

Пока единственное, что пришло на ум, собирать запрос через массив. Будет некоторая избыточность, но, в общем, должно работать. Где-то так:

Код

$SQL = array();

$SQL['select'][] = 'table1.field, table2.field FROM table1';
$SQL['inner_join'][] = 'table2 ON table2.id=table1.id';
$SQL['where']['and'][] = 'table1.id=1';


Если имеются модификаторы, мы их просто добавляем в массив, например:

Код

if (isset($_POST['last_month']))
$SQL['where']['and'][] = 'table2.date>='.(time()-60*60*24*31);


Ну и дальше по логике из массива компонуем SQL запрос. Это пока только задумка. Уверен, есть практические реализации, вот их и хотел бы посмотреть, зачем изобретать велосипед? Лучше взять за основу готовый. smile Буду рад любой помощи и подсказкам. Заранее спасибо!
PM MAIL   Вверх
Aliance
Дата 5.5.2014, 10:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 3
Всего: 137



Можно использовать Zend_Db, т.к. компоненты zend framework можно использовать по-отдельности.
И, кстати, вариант с where не самый лучший, т.к. нужно заботиться об экранировании. Лучше в таком случае использовать placeholder`ы (смотри в сторону PDO)
PM MAIL WWW ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Базы Данных | Следующая тема »


 




[ Время генерации скрипта: 0.0655 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.