Найдена 1 запись с тэгом «базы данных»
Свои SQL placeholder-ы
08.08.2013 15:06
0Работа с плейсхолдерами обычно представляет собой нечто такое:
func( "select * from ? where `id`=?", "table1", 5 )
Внутри функции это развернется в:
select * from `table1` where `id`="5"
Всю работу по эскейпингу аргументов и заключение их в спецсимволы берет на себя как раз парсер плейсхолдеров.
Существуют так называемые "нативные" плейсхолдеры - они реализуются самой БД или драйвером БД и работают очень быстро, однако функционал их очень беден и работа отличается от БД к БД.
Я же расскажу здесь о "внешних" плейсхолдерах - т.е. реализуемых на стороне скриптового языка. Они чуть медленнее, так как обработка происходит в самом скрипте, но имеют на порядок больше функционал и независимы от БД.
В моем случае падение скорости совсем незначительное - используется обычное PCRE регулярное выражение для замены плейсхолдеров в строке и небольшая логика - в исходниках класса можно посмотреть.
Создать свои плейсхолдеры меня побудила статья про DBSimple от dkLab.
Там предлагались несколько плейсхолдеров, сильно облегчающих жизнь с SQL.
Идею и подход позаимствовал оттуда, а вот сами плейсхолдеры значительно изменил.