Javascript-форум (https://javascript.ru/forum/)
-   Оффтопик (https://javascript.ru/forum/offtopic/)
-   -   Нубские sql вопросы (https://javascript.ru/forum/offtopic/39744-nubskie-sql-voprosy.html)

PashPP 10.07.2013 11:05

Нубские sql вопросы
 
Доброго дня, котаны.

Нужно сформировать средней сложности запрос и вернуть аяксом ответ.
Так вот, для начала: нормальная ли практика создавать отдельный php файлик и только в нем по запросу возвращать. Или обернуть родную страничку в какой-то иф, и если она вызывается без гетов, постов, то выдавать интерфейс, а если с чем-то, то результат запроса? Просто не знаю как у вас там в пхп положено.

Второй вопрос, как сформировать строку запроса, если там есть несколько AND , количество которых зависит от запроса и может быть разное?

Ну и третье, может кто подскажет краткий справочник по всему этому с макс количеством практических примеров? А то везде в основном примеры на чистом sql, а практических мало, ну и нет возможности перерывать сейчас мотни страниц.

mta88 10.07.2013 11:37

Цитата:

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

Цитата:

как сформировать строку запроса, если там есть несколько AND , количество которых зависит от запроса и может быть разное
либо генерировать запрос самому конкатенацией строк, либо использовать "query builder" какой найдешь (я лично видел в orm doctrine2, в cms drupal и в фреймворке yii)
если будешь генерировать сам, не забудь использовать "prepare" (из mysqli или pdo) для вставки аргументов, полученных от пользователей (иначе схлопочешь sql-инъекцию)

Цитата:

краткий справочник по всему этому с макс количеством практических примеров
справочник по чему?
* pdo? там всего несколько методов и классов
* sql? "Learning SQL" by Beaulieu

Gozar 10.07.2013 11:46

Цитата:

Сообщение от PashPP
нет возможности перерывать сейчас мотни страниц

Поэтому ты хочешь, чтобы кто-то сделал это за тебя?

Цитата:

Сообщение от PashPP
Или обернуть родную страничку в какой-то иф, и если она вызывается без гетов, постов, то выдавать интерфейс, а если с чем-то, то результат запроса? Просто не знаю как у вас там в пхп положено.

Зачем мешать интерфейс и геты в кучу? Можно создать для запросов отдельный файл и назвать его, как ни странно, например: get.php

Цитата:

Сообщение от PashPP
не знаю как у вас там в пхп положено.

У кого, у вас? Как напишешь программу, так и будет.

Цитата:

Сообщение от PashPP
Второй вопрос, как сформировать строку запроса, если там есть несколько AND , количество которых зависит от запроса и может быть разное?

Сначала пишешь как умеешь, затем оптимизация. Все как обычно. Либо запрос неправильно составлен, раз там много этих AND. Либо формируй запрос на лету, только данные не забывай проверять(регами например).

Gozar 10.07.2013 11:49

Цитата:

Сообщение от mta88
если будешь генерировать сам, не забудь использовать "prepare" (из mysqli или pdo) для вставки аргументов, полученных от пользователей (иначе схлопочешь sql-инъекцию)

И получишь неработающие запросы по причине, которую найдешь не сразу. Тот же LIKE покажет фигу и будет ругаться неприличными словами, а все потому что prepare со вставкой аргументов работать не будет. В остальном совет правильный, но для динамических запросов нереализуемый.

Gozar 10.07.2013 11:50

Цитата:

Сообщение от mta88
сейчас в моде MVC и прочее разделение обязанностей
все должно быть разделено -- роутинг, контроллеры, модели, шаблоны

Звучит как
- мне нужен мопед
- купите космолет, они сейчас в моде.

mta88 10.07.2013 12:07

Цитата:

Тот же LIKE покажет фигу
да, есть такое

Цитата:

Звучит как
- мне нужен мопед
- купите космолет, они сейчас в моде.
ну я не имел ввиду сразу symfony2 :-?
если топикстатер захочет, напишет с нуля в одном файле

PashPP 10.07.2013 12:13

mta88,
Спасибо.
Цитата:

Сообщение от Gozar
Поэтому ты хочешь, чтобы кто-то сделал это за тебя?

Да у тебя уже паранойя. Еще "Иди в Работу" вспомни.

Цитата:

Сообщение от Gozar
Зачем мешать интерфейс и геты в кучу? Можно создать для запросов отдельный файл и назвать его, как ни странно, например: get.php

Оки. Спасибо.
Цитата:

Сообщение от Gozar
У кого, у вас? Как напишешь программу, так и будет.

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

Цитата:

Сообщение от Gozar
Либо запрос неправильно составлен, раз там много этих AND.

Хм. Ну он пока что и не составлен. Посмотрим.

Gozar 10.07.2013 15:55

Цитата:

Сообщение от PashPP
Да у тебя уже паранойя

Нет это у тебя непонимание того, зачем нужен форум. http://phpclub.ru/faq/WhyForum

Tim 13.07.2013 15:42

Цитата:

Да у тебя уже паранойя.
Есть немного, но его это не смущает


Часовой пояс GMT +3, время: 10:02.