Mysql The best PDO wrapper

Фанат

oncle terrible
Команда форума
А биндя идентификаторы, если так сделаешь без этого метода - можно получить, например любые данные о юзере
Ты путаешь две проблемы.
проблема получения любой инфы - вторая.
А первая - добавление идентификаторов в запрос вообще.

Если у тебя есть запрос и есть динамический литерал - он должен быть добавлен через плейсхолдер. Вообще неважно, что за запрос и что за литерал. Это должно быть просто железное правило.
Если его надо пропускать через белый список - ок, пропускаем. Но это не отменяет необходимости его забиндить
 

hell0w0rd

Продвинутый новичок
Фанат, окей, можно юзкейс?
Хотя...
Код:
SELECT c:columns FROM c:table where id = i:id
Только зачем такое нужно?
И да, в случае обертки над PDO такого не добавишь без особой магии в виде связующего объекта между pdo и stmt, ибо на каждое изменение нужен свой stmt
 
Последнее редактирование:

Фанат

oncle terrible
Команда форума
Фанат, окей, можно юзкейс?
Юзкейсов море, причем далеко не все они связаны с пресловутой защитой от инжекций.
Речь не о конкретных юзкейсах, а об обязательных принципах динамического составления запросов.

А так-то идентификатор идет и в order by, и в имя таблицы при селекте, и при апдейте имена полей часто бывают динамическими. Селект твой, опять же.

Но дело не в них. А в общем подходе. Надо добавить элемент в запрос из переменной? Не изобретаешь велосипед, а используешь плейсхолдер нужного типа.
- просто, логично, безопасно.
 

artoodetoo

великий и ужасный
я в своих велосипедах делаю плейсхолдер для префикса имен таблиц. помоему это очень даже юзкейс XD
Код:
SELECT * FROM `:p_users` WHERE `id`=:id
 
Сверху