MGriboedoff: Томас очень правильно пишет: если prepared statements используются везде. Если кто-то не делает правильную защиту от инъекций, то это он виноват. И лечить надо не следствие, а причину. То есть ИСКЛЮЧИТЬ случаи, когда данные не обязательно будут подставлять в prepared statements.
не понял, что такое "предупреждение атак" в твоем понимании. Но в любом случае, все атаки ты не предупредишь, а вот честным пользователям будешь мешать. Поэтому такая проверка неприемлема.
Эк тебя корёжит :) Тяжко признавать свою неправоту? В первом пункте я оказался прав, а в четвертом, оказывается, я снова "только в одном" прав :) Плюс, ты так и не понял, что чувак как раз и пишет ту самую прослойку. То есть, ты неправ по всем пунктам. Ну, и чтобы все встало на свои места: если не собираешься отвечать на вопрос - не отвечай.
После того как подумаешь, задай себе вопрос. Который в 100 раз важнее, чем твои страдания с INSERT. Вот ты пишешь, что "я не пишу переменные прямо в запрос без предварительной обработки." А с чего ты взял, что твоя обработка имеет хоть какой-то смысл? Что она хоть от чего-то защищает? Что она правильная, в конце концов?
Честно говоря, вы с твоим другом выпили из меня все нервы. Поэтому длинно я растекаться не буду, я только обращу твое внимание на вопросы, которые я задал в самом начале своего ответа. Посмотри на них внимательно. Они не просто так для красоты написаны. Подумай над ними. Хорошенько.
Дмитрий: ну не тупи уже теперь ты. я столько не выдержу. PDO к твоему вопросу не имеет ни малейшего отношения. PDO может только ВЫПОЛНИТЬ твой запрос, но СОСТАВИТЬ его за тебя не может. А у тебя вопрос - КАКОЙ вопрос выполнить. PDO - ЭТО НЕ БАЗА ДАННЫХ. Глупо спрашивать, есть ли у него синтаксис insert. Нету. Синтаксис есть у mysql. Именно поэтому ответ, который мы сейчас комментируем, так истерически смешон. Не уподобляйся. Через PDO ты легко можешь выполнить запрос c SET. Точно так же, как можешь составить динамический INSERT в классическом синтаксисе.
Виктор Выскребенцев: Если бы хотя бы чуть-чуть понимал, о чем говоришь, тебе было бы очень стадно :) Окей, ты не смог понять вопроса про формат INSERT. Окей, ты не понимаешь, что рекомендуемый тобой PDO не делает НИЧЕГО, кроме выполнения поносимого тобой же чистого SQL (хотя это само по себе ржака и шизофрения %). Но теперь ты опять наступаешь на те же грабли, и в твою голову, забитую умными словами, не помещается тот факт, что любой ORM в конечном итоге, внутри у себя, не посредством волшебной палочки выполняет запрос, а посредством того самого, чистого SQL :)))
проблема в том, что смысла термина CRUD ты тоже не понимаешь. Иначе бы не рассказывал про чистый SQL. Про который, кроме тебя, тут НИКТО больше не упоминает.
надо убрать слово экранировать. во-первых, оно не имеет отношения к инъекциям, а во-вторых, единственным способом помещения переменной в запрос, должен быть prepared statement
Ты всё равно не поймешь. Я тебе задал простой вопрос из одного предложения: какая связь между PDO и форматом запроса INSERT. Ты в ответ накатал килобайт текста, в котором ни одно из ключевых слов вопроса не встречается. Это значит, что даже простого вопроса в одну строчку ты не понял. А уж более сложных объяснений и подавно не поймешь.