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