Класс обертки Mysqli by Koenig (Допилить)

9.21K
.
╭∩╮ (`-`) ╭∩╮
# Delphinum (21.08.2013 / 23:43)
(в частности компонента LIMIT, которая совпадает максимум в 2 перечисленных СУБД)
Как раз таки с Лимитом проблем и нет.
Проблема в кодерах, которые привыкли работать с Мускулом и писать LIMIT 10,5 (я сам так раньше писал).
Но сокращенный вариант связки LIMIT OFFSET поддерживают не все базы, да и по канонам SQL это некошерно.
Посему, правильнее вышеприведенный запрос писать так: LIMIT 10 OFFSET 5 это поддерживают все SQL совместимые базы, включая Postgres и SqLite
---
Более серьезная проблема не в этом, а в кавычках, но и она шешаема.
.
# AlkatraZ (21.08.2013 / 23:56)
включая Postgres и SqLite
и выключая MSSQL, FireBird, Oracle DB, DB2
.
╭∩╮ (`-`) ╭∩╮
Когда работаешь через PDO, проблема с кавычками в билдере запросов тоже легко решаема, надо всего лишь добавить один метод:
public function detectQuoteCharacter(PDO $connection) {
            switch($connection->getAttribute(PDO::ATTR_DRIVER_NAME)) {
                case 'pgsql':
                case 'sqlsrv':
                case 'dblib':
                case 'mssql':
                case 'sybase':
                case 'firebird':
                    return '"';
                case 'mysql':
                case 'sqlite':
                case 'sqlite2':
                default:
                    return '`';
            }
        }
.
╭∩╮ (`-`) ╭∩╮
# L!MP (21.08.2013 / 23:59)
и выключая MSSQL, FireBird, Oracle DB, DB2
Скажи мне уважаемый, когда ты в последний раз использовал в WEB разработках MSSQL, FireBird, Oracle DB, DB2, да и вообще, когда ты их использовал?

Я например, раньше по долгу работы серьезно занимался MSSQL, дома даже есть толстенная книга, которую я когда-то асилил, но уже лет 12 к той базе не подходил за ненадобностью.
.
# AlkatraZ (22.08.2013 / 00:01)
Скажи мне уважаемый, когда ты в последний раз использовал в WEB разработках MSSQL, FireBird, Oracle DB, DB2, да и вообще, когда ты их использовал?
Ну вон товарищу выше нужна такая абстракция, и не только ему, кстати.
.
Абстракцию между MySQL, PgSQL и SQLite весьма легко сделать.

Все они работают с LIMIT 10 OFFSET 0.
Квотирование идентификаторм (имена таблиц, полей) не проблема сделать.
Существует определённые танцы с бубном вокруг lastInsertId в PgSQL и с массовым INSERT в SQLite, но то же решаемо.
.
# AlkatraZ (21.08.2013 / 23:59)
Когда работаешь через PDO, проблема с кавычками в билдере запросов тоже легко решаема, надо всего лишь добавить один метод:
[php]public function detectQuoteCharacter(PDO $connection) {
s
Здесь подсмотрел реализацию?
.
╭∩╮ (`-`) ╭∩╮
# L!MP (22.08.2013 / 00:04)
Ну вон товарищу выше нужна такая абстракция, и не только ему, кстати.
Это уже извращение
Если мы пишем на РНР и хотим соорудить какую-то абстракцию, нам надо рассматривать классические варианты из MySQL, PostgreSQL и SqLite. Остальное можно смело игнорировать.

Я сильно сомневаюсь, что кто-то например будет гонять сложный РНР скрипт на Windows сервере (продакшн) и использовать при этом MSSQL. Даже в случае винды, есть нативные варианты MySQL, MariaDB, включая 64-битные версии.
.
╭∩╮ (`-`) ╭∩╮
# L!MP (22.08.2013 / 00:11)
Здесь подсмотрел реализацию?
Да, именно эту библиотеку я взял за основу для запиливания в наш код, правда ее приходится весьма сильно переделывать. Но идея оттуда. Idiorm + Paris
.
L!MP, тогда я снова тебя не так понял ) У меня нет неприязни к билдерам, я просто их не применяю так как есть более удобные решения.
AlkatraZ, по долгу службы мне часто приходится использовать разные СУБД (клиенты адовые попадаются), потому одной только MySQL с Postgres не хватает.
Всего: 362