Всем привет. В виду того, что mysql по тихой умирает и в новых версиях php уже не будет поддерживаться, да часто вижу, что рекомендуют переходить на mysqli и т.д... решил проект перевести. Но вопрос остался куда и как. Проект большой, файлов очень много, в 95% используется для запросов обертка вида my_query и т.д... Но сами запросы по факту не меняются. Работы по переходу на mysqli не много выходит, в принципе. Но скрипт который используется в проекте постоянно используют строя другие сайты. Т.е. я его использую в других проектах, на других хостах и т.д... И возник вопрос о том, чтобы не делать поддержку только одной mysqli, а сделать более-менее универсальные запросы, чтобы можно было использовать разные БД. Сам скрипт - интернет-магазин. Мне приглянулся способ, который реализован в punbb. Если посмотреть, то там есть классы для работы с: mysqli, pgsql, sqlite. А сами запросы очень удобные, на мой взгляд(!). Код (Text): $query = array( 'SELECT' => 'c.id AS cid, c.cat_name, f.id AS fid, f.forum_name, f.forum_desc, f.redirect_url, f.moderators, f.num_topics, f.num_posts, f.last_post, f.last_post_id, f.last_poster', 'FROM' => 'categories AS c', 'JOINS' => array( array( 'INNER JOIN' => 'forums AS f', 'ON' => 'c.id=f.cat_id' ), array( 'LEFT JOIN' => 'forum_perms AS fp', 'ON' => '(fp.forum_id=f.id AND fp.group_id='.$forum_user['g_id'].')' ) ), 'WHERE' => 'fp.read_forum IS NULL OR fp.read_forum=1', 'ORDER BY' => 'c.disp_position, c.id, f.disp_position' ); Есть ли смысл вообще заморачиваться и так сильно переписывать скрипт. Или лучше просто поправить под что-то одно\два и использовать?
в чем профит? SQL это офигенное изобретение человечества, зачем его рвать таким вот образом непонятно. Добавлено спустя 4 минуты 56 секунд: чтобы абстрагироваться от конкретной БД незачем делать свой [ типа ] построитель запросов.
я привел как пример этот запрос. конечно проще без этого всего делать. удобно мне показалось тем, что используя какою-то систему хуков, будет не сложно такой запрос изменять из других модулей, чем парсить всю строку или переписывать запрос по новой(если не поняли о чем я, то опишу подробнее).
я знаком с паббшными хуками и это была причина завязать с панбб Добавлено спустя 57 секунд: когда флаксбб форкнулся от панбб они не стали брать с собой этот хлам. и я их поддерживаю.
Топик неправильно юный падаван обозвал однако. Не от MySQL, а всеголишь mysql.... я было подумал, что что-то случилось.
Вопрос не в этом. Да. Сори, исправлю сейчас. система хуков там конечно жесть. Я в общем писал о запросе только. Просто удобнее взять из массива нужные данные запроса, а не весь запрос. Хотя смотря на другие реализации, то там переопределяют полностью функции(методы) чаще, для внесения изменений. Но вопрос остается открытым. Отбросим варианты реализации запросов. На что лучше переводить то скрипт? Просто поправить до поддержки mysqli проще будет? Я думал более универсально. Чтобы можно было юзать при желании другие бд. Может есть какие-то готовые обертки, чтобы не писать с нуля, которые будут поддерживать разные БД?
Самое очевидное - переключиться на PDO. Под него же есть драйверы к разным БД. Сложности поддержки разных диалектов SQL конечно никуда не денутся. Например не везде есть LIMIT Вместо PDO берут и "самописные" интерфейсы. Ну как это делает punbb или какой-нибудь phpbb, у них есть интерфейс или абстрактный класс DBLayer плюс реализации его для популярных СУБД. Я не знаю какое решение лучше. Если рассуждать о продукте на продажу, то пусть он работает через PDO как более "стандартный" подход, чтобы ничего никому не доказывать. А для внутренних нужд возьму свой интерфейс ради скорости и удобства лично для меня.