Boroda aka Hamster (fantaseour) wrote,
Boroda aka Hamster
fantaseour

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
Конспект для тех, кто ниасилит :)
Tags: development, php
Subscribe

  • Post a new comment

    Error

    default userpic

    Your reply will be screened

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 0 comments