Защищает ли PDO от SQL-инъекции?
Защищенность PDO от инъекций строится на использованании не динамически создаваемых запросов, но запросов с параметрами. Любой момент изменения запроса в коде под какие-то (часто необдуманные) нужды приводит к возможности инъекции.
пример вам уже привели, повторю его:$qry = 'select * from users where user_id='".$usrname.'" and passwd='".md5($passwd.'$salt).'"';
запрос подвержет инъекции: достаточно подсунуть имя с двойной кавычкой и далее через точкузапятую свой запрос. Остаток с паролем комментируется символами:$usrname = '"; update users set passwd="12345" where id="admin"; -- ';
 приведет фактически к такому запросуselect * from users where id=""; update users set passwd="12345" where id="admin"; -- passwd=''
совсем другое дело PDO. Он не допускает мультикомандные запросу как факт (то есть после первого select обработка не пойдет). А во вторых указанные инъекции просто запицется в параметры запроса, что будет обработанно корректно.
Спасибо. Есть ли еще варианты? Просто нужно как то аргументировать подрядчику что PDО не полностью защитит базу, поэтому  не стоит шифровать пароли функцией md5(). Помогите пожалуйста с аргументами. Буду очень признателен.