Найдена 1 запись с тэгом «базы данных»

Свои SQL placeholder-ы

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

Работа с плейсхолдерами обычно представляет собой нечто такое:
func( "select * from ? where `id`=?", "table1", 5 )

Внутри функции это развернется в:
select * from `table1` where `id`="5"

Всю работу по эскейпингу аргументов и заключение их в спецсимволы берет на себя как раз парсер плейсхолдеров.

Существуют так называемые "нативные" плейсхолдеры - они реализуются самой БД или драйвером БД и работают очень быстро, однако функционал их очень беден и работа отличается от БД к БД.

Я же расскажу здесь о "внешних" плейсхолдерах - т.е. реализуемых на стороне скриптового языка. Они чуть медленнее, так как обработка происходит в самом скрипте, но имеют на порядок больше функционал и независимы от БД.
В моем случае падение скорости совсем незначительное - используется обычное PCRE регулярное выражение для замены плейсхолдеров в строке и небольшая логика - в исходниках класса можно посмотреть.

Создать свои плейсхолдеры меня побудила статья про DBSimple от dkLab.
Там предлагались несколько плейсхолдеров, сильно облегчающих жизнь с SQL.
Идею и подход позаимствовал оттуда, а вот сами плейсхолдеры значительно изменил.