На сколько грамотно использовать обёртку работы с БД в PHP

123 4
M
На сайте с 15.03.2012
Offline
101
#11

ТС, каждому своё. Для себя можете написать свою библиотеку, а можете взять какую нибудь понравившуюся. У каждого своё мнение, а ваше мнение (что для вас удобно) сформируется только с опытом.

Лично я sql запросы пишу только руками, а уже получаю и обрабатываю данные с помощью Zend_Db такими удобными для меня методами как fetchAll, fetchOne, fetchCol, fetchPairs и тд. Названия говорят сами за себя.

По поводу конструкторов запросов согласен с мнением, что это лишнее.

U
На сайте с 25.10.2006
Offline
71
#12

ТС, если PDO уже используется, то можно от него унаследовать свой класс и реализовать доп. методы и(или) переопределить существующие.

В общем случае конструктор запросов это не только ОПП абстракция вокруг SQL, но и еще куча всяких доп. фич.

Пример из Drupal 7

$query = db_select('node', 'n');

$query->join('field_data_body', 'b', 'n.nid = b.entity_id');
$query
->fields('n', array('nid', 'title'))
->fields('b', array('body_value'))
->condition('n.type', $type)
->condition('n.status', $status)
->orderBy('n.created', 'DESC')
->addTag('node_access');

Для простых запросов можно использовать db_query()

$record = db_query('SELECT n.nid, n.title FROM {node} n WHERE n.status = 1')->fetchObject(); 

C
На сайте с 04.02.2005
Offline
277
#13
ucha:
ТС, если PDO уже используется, то можно от него унаследовать свой класс и реализовать доп. методы и(или) переопределить существующие.

В общем случае конструктор запросов это не только ОПП абстракция вокруг SQL, но и еще куча всяких доп. фич.

Пример из Drupal 7
$query = db_select('node', 'n');
$query->join('field_data_body', 'b', 'n.nid = b.entity_id');
$query
->fields('n', array('nid', 'title'))
->fields('b', array('body_value'))
->condition('n.type', $type)
->condition('n.status', $status)
->orderBy('n.created', 'DESC')
->addTag('node_access');

А теперь скажите .... Какой запрос вы получите

Сколько времени на его анализ?

Или...

Сначала пишете запрос, а потом его в конструктор?

IL
На сайте с 20.04.2007
Offline
435
#14
LEOnidUKG:
->where (array('in', 'id', $ids))
Чтоб я умер в такой хрени разбираться.

По сути тоже самое, что

'WHERE id IN ('.  implode (',', $ids) .')'

* только через binding в PDO с экранированием и другими плюшками

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

Jquery не используешь?

Может и без PHP обойтись - тоже обёртка к машинному коду... да ещё через интерпретацию. пиши сайты на асме.. или на худой конец на сях.

В некоторых ситуациях (если речь об "обычных" сайтах - почти всегда) выбор быстродействие vs скорость внесения изменений (читать человекочасы работы программиста) и удобство поддержки (тоже самое) в пользу удобства. Естественно, это не значит, что нужно захламлять код, делать кривые запросы и вообще..

Просто нет смысла экономить на спичках там, где можно сделать удобно.

P.S. А вообще с БД надо работать через сокеты а не через пхпшные функции, но тут вы разницу увидите только на нагруженных проектах и в которых отказы в обслуживании стоят денег. А так, на примитивном уровне, разница в числе букв кода.

бред. скомпилированные расширения работают быстрее, чем тот же самый код ("работа с сокетами"), написанный на "чистом" PHP.

При этом абсолютный выигрыш в такой "экономии" (на спичках - что использование обёрток, что "работа через сокеты", что использование коротких имён переменных и прочих советов по оптимизации) по сравнению с тормозами из-за непродуманной архитектуры приложения, неправильной структуры БД, отсутствия индексов, кривых запросов и прочих распространённых ошибок мизерный.

... :) Облачные серверы от RegRu - промокод 3F85-3D10-806D-7224 ( http://levik.info/regru )
U
На сайте с 25.10.2006
Offline
71
#15
Chukcha:
А теперь скажите .... Какой запрос вы получите
Сколько времени на его анализ?

$query->__toString(); // Вернет "чистый" SQL

А вообще запрос как бы интуитивно понятен. ИМХО :)

TF-Studio
На сайте с 17.08.2010
Offline
334
#16

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

Всё ещё лучший способ заработка для белых сайтов: GoGetLinks (https://www.gogetlinks.net/?inv=fahbn8).
LEOnidUKG
На сайте с 25.11.2006
Offline
1731
#17
TF-Studio:
Июшный вариант, если чуть разобраться

Как я и писал. Об этом говорят КАЖДЫЕ и для ВСЕХ фреймворков. Без исключения.

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/
U
На сайте с 25.10.2006
Offline
71
#18

Я вот с YII не работал, но почему то сразу понял что это за запрос. Ну или думаю что понял.

TF-Studio
На сайте с 17.08.2010
Offline
334
#19

Фреймворк - это стандартизация.

И гораздо лучше разобраться в 1-2, чем постоянно разбираться в чужих велосипедах.

Потому что все хотят сделать свое обертку/обвязку для всего подряд.

bsyomov
На сайте с 25.01.2012
Offline
31
#20

mysql_query использовать не стоит хотябы потому, что это depricated, и потому, что наверняка найдутся места, где вам воткнут SQL injection.

Предпочтительно использовать PDO.

Писать свою обёртку, обычно довольно мало смысла. В небольшом проекте это будет лишний код сомнительной в итоге полезности, а в большом лучше использовать готовый фреймворк, где она уже будет.

123 4

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий