?

Log in

No account? Create an account
Main

PDO. мечты не сбылись :(

Я-то надеялся что PDO позволит выкинуть из моего фреймворка собственный DBAL. Типа стандарты, удобство и все такое.

Однако даже работая с sqlite и mysql имеем необходимость писать надстройку над PDO. Дело в том, что таблицы и имена колонок, совпадающих с зарезервированными словами в SQL-выражениях кавычатся обратной кавычкой в mysql и обычной двойной кавычкой в sqlite.

Смотрим, как Зенд справляется с этим? Ага -- пишет адаптер к PDO. Угу. Теперь вот выбор -- брать сразу зендовский адаптер (нужна пока только quoteIdentifier()) или пока сделать свой простенький ради этого?

Аррргххх... меня можно назвать любителем велосипедов, ага... судьба такой :(

Comments

можно включить ANSI_QUOTES в mysql и пользоваться двойными кавычками
Не -- это не кажется надежным, -- перенесешь кудани-будь -- забудешь включить и начнутся эффекты. Но спасибо -- я не знал, что так можно сделать.

Тут еще один момент подоспел :) символы комментариев и разделения команд (в mysql -- ; ) при парсинге дампов нужно. Эти символы тоже бы хорошо уметь из объекта соединеня забирать.

Также команды, устанавливающие кодировку тоже в PDO отсутствуют. Да и в Зенде на вскидку не нашлось.

В общем адаптер неизбежен.

В любом случае PDO сократил существенно заботы о DBAL. Просто я ждал, что он решит все проблемы :)
"--" - это стандартный коммент-символ в ansi sql
";" - практически все понимают, это часть грамматики sql
у mysqldump'а есть параметр --compatible=ansi
да и в xml оно в принципе выводить может
как показала практика, наиболее правильное экранирование для sqlite — квадратные скобки. всё остальное в тот или иной момент даёт сбой (потому что sqlite попытается проявить мудрость в неправильный момент)