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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> PARSE PREG SQL, Парсинг sql запроса онли регулярка 
V
    Опции темы
Sanchezzz
Дата 20.3.2013, 16:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1670
Регистрация: 19.11.2006
Где: Voronezh

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



Задача есть sql запрос Select я его хочу распарить на составляющие а именно меня интересует секция запроса select (.*)  from  (.*) where 
Знаю что есть монстро библиотека  PHP SQL Parse которое (Юмор: делает то что мне нужно)

Но она громоздкая посему вынужден от нее отказаться .

Прощу помощи в регулярке
Код

// Для теста 
$sql = "SELECT articles.*, formats.format_title 
FROM articles 
INNER JOIN formats ON articles.article_format_id = formats.format_id 
INNER JOIN article_categories ON articles.article_id = article_categories.article_id 
WHERE article_categories.category_id = 2 
ORDER BY articles.article_date DESC";

preg_match('/^\s*'.
'SELECT\s+(?P<select_rows>.*[^\s])'. 
'\s+FROM\s+(?P<from>.*[^\s])'.
'(?:\s+WHERE\s+(?P<where>.*[^\s]))?'.
'(.*)$/is',$sql,$mather);

pre($mather);

Как сделать так что бы Where был не обязательным, ведь запрос может быть выполнен и без WHERE

Посути меня интересует только список таблиц для того что потом обратится к схеме и получить поля таблицы и построить AR  на основе SQL запроса и результата.
Где то читал, что можно explain  запрос прогнать и оттуда таблицы выдрать, но мне этот вариант как не очень показался.

Модераторы прощу прощения перенесите тему в общие вопросы.

Это сообщение отредактировал(а) Sanchezzz - 20.3.2013, 16:46


--------------------
Понравился ответ "+" по репе, не забываем закрывать тему, заказы в LS.
PM MAIL Skype GTalk   Вверх
Sanchezzz
Дата 23.3.2013, 20:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1670
Регистрация: 19.11.2006
Где: Voronezh

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



Как оказалось бесполезная затея, вопрос закрыт. 


--------------------
Понравился ответ "+" по репе, не забываем закрывать тему, заказы в LS.
PM MAIL Skype GTalk   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Базы Данных | Следующая тема »


 




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


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

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