Работа плейсхолдеров PDO Mysql

Печать RSS
316

К
Автор
Айсберг Визави
0
Доброго времени суток! Не подскажете механизм работы плейсхолдеров PDO? Гуглил, много чего нашел, вроде как даже понял, но все равно такое чувство что не до конца.
Что я понял:
1. Подготовка выражений(prepared statements). Есть выражение, в котором нет данных, а только SQL выражение.
2. Есть переменные(плейсхолдеры), которые по сути и есть данными для будущего запроса.
3. PDO отправляет запрос mysql, но без данных, проверяя правильность запроса и отправляет уже данные, но в двоичном формате. Тут вообще не понятно, как проверяется? Все равно для коректности нужно отослать хотя бы тип данных и длину плейсхолдеров, для проверки. Тут вот непонятки.
4. Возврат результата. Для fetch() - результат, для запроса логическое TRUE;
И да, многие пишут что подготовка запроса - это лишь профилактика из соображений целесности запроса.
Пишем, рассказываем, думаем.

UPD Мне кажеться, или где-то читал, что плейсхолдеры не пропускают данные, которые не проходят проверку разрешенного типа, но запросто пишут уязвимый js(xss, к примеру), который запросто пишеться в text или varchar.
Изменил: Кевин Митник (04.02.2013 / 04:38)
К
Автор
Айсберг Визави
0
http://wiki.hashphp.org/PDO_Tutorial_for_MySQL_Developers тут говориться, что обработанные данные XSS атакам не подвержены. Что же тогда пропускает js???

крутой чЕл
0
А ты пробовал?
К
Автор
Айсберг Визави
0
да. пропускает, но запрос не ломается при использовании PS, когда я передаю спец-символы. То есть никаких там приколов с таким */, *, 1=1 не проходит. Но js код в целости и сохранности сохряняется и дальше выводиться.
А

Оранжевые штаны
0
Тип данных определяется исходя из типа поля таблицы, в которую эти данные заносятся. Можно даже скомпилировать запрос так, чтобы потом СУБД не интерпретировало его, а использовало скомпиленный вариант, это ускоряет работу с СУБД

крутой чЕл
0
5. Башка, На сколько быстрее? Как компилировать?

Господин ПЖ
0
сейчас уже не модно изобретать велосипеды, по возможности необходимо использовать готовые ORM
К
Автор
Айсберг Визави
0
#5, вот это понял. Только не пойму, почему нигде не призывают все таки преобразовывать данные перед INSERT, UPDATE, когда они заносяться в базу.

#7, спасибо. А какими готовыми пользуешься? Я вот в сторону Kohana ORM.
А

Оранжевые штаны
0
6. Wapruks, оно само компилит и возвращает специальную ссылку, которая затем используется для передачи запросов. Не помню как именно, не использовал в пыхе

Добавлено через 00:57 сек.
8. Кевин Митник_HHTeam, оно само преобразовывает экранируя все ненужные символы, а если точнее там исчезает необходимость в экранировании в принципе, так как спец символы просто не интерпретируются как часть запроса

Добавлено через 01:30 сек.
7. Vantuz, ORM не достаточно гибок как правило, лучше смотреть в сторону подобий jpql
К
Автор
Айсберг Визави
0
9. Башка, я знаю. Запрос не ломает, SQL-inj исключена, но XSS возможна.
Стикеры / Теги / Правила / Топ тем / Топ постов / Поиск