?

Log in

No account? Create an account
Main

PDO. Жизнь НЕ налаживается.

В продолжение к "наполовину решаемым проблемам" (большое спасибо weirdan за комментарии). Добавилась таки проблема совсем неприятная.

Если кавычки для идентификаторов, комментарии, знаки конца SQL выражений, в мускуле можно настроить в соответствии с ANSI, и не писать адаптер (хотя по мне адаптер все равно лучше -- и он адаптеры пишут все -- Doctrine, Ez, Zend), то для логов SQL запросов, отправленных через PDO, адаптеру придется брать биндинг значений на себя.

Рекомендуемым способом построения запроса в PDO (да и в Creole и ADODB (вот тут не уверен, но кажется это так)) является составление SQL с плейсхолдерами вместо значений. Значения впоследствии биндятся к плейсхолдерам. Таким образом во-первых DBAL берет на себя экранирование кавычек и прочих опасных символов, а во-вторых если мы делаем запрос в цикле (например UPDATE), то экономится время на парсинг запроса.

Не говоря о том, что такой способ очень неудобен при разработке ORM (приходится цепочки критерия пробегать дважды -- при составлении WHERE части запроса и для биндинга значений), и не дает выигрыша при одноразовом вызове запроса, так еще и нету лога, чтобы узнать какой запрос реально уехал в базу, для отладки.

Все еще не знаю что делать пока. Свой адаптер, Ez, Zend или ORM Doctrine и адаптер оттуда. Про ORM все еще хочу написать отдельный пост, просто мысли пока не сформировались. Пока ссылку приведу -- статья длинная, много буков, но мне заголовок нравится:

The Vietnam of Computer Science
Конспект для тех, кто ниасилит :)

Comments