Персонализирани SQL заместители

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

Работата с заместители обикновено е нещо подобно:
func ("select * from? where` id` =?", "table1", 5)

Във функцията това ще се разшири до:
изберете * от `table1`, където` id` =" 5 "

Парсерът за запазени места се грижи за цялата работа по избягване на аргументи и затварянето им в специални символи.

Съществуват така наречените „местни“ запазващи елементи - те се прилагат от самата база данни или от драйвера на базата данни и работят много бързо, но тяхната функционалност е много лоша и работата се различава от базата данни до базата данни.

Ще ви разкажа за "външни" заместители тук - т.е. внедрен от страната на скриптовия език. Те са малко по-бавни, тъй като обработката се извършва в самия скрипт, но те имат порядък повече функционалност и са независими от базата данни.
В моя случай спадът на скоростта е съвсем незначителен - обичайният регулярен израз на PCRE се използва за заместване на заместители в низа и малко логика - в изходния код на класа можете да видите.

линия. # =?
параметри a, b, c, d, e
съчетаване? = a,? # = b,? <> <> = c, = d, = e

линия. # =?< ? >
параметри a, b, c, d, e, f
съчетаване? = a,? # = b,? <> <> = c,? <> <> = d, = e, = f

На име

В този случай всички параметри се предават като един именен масив.
Не можете да комбинирате имена и редовни заместители.