Насколько я знаю, использование prepared statement уже само по себе гарантированная защита от SQL инъекций (т.к. данные посылаются на сервер отдельно от запроса и сервер делает все необходимое, что бы экранировать данные).
Однако, использование prepared намного более объемное по коду чем использование PDO::query для единичных запросов. Сравним:
$stmt = $DBH->prepare("SOME SQL QUERY");
$stmt->execute($array_with_data);
$result = fetchAll();
Или даже так:
$stmt = $DBH->prepare("SOME SQL QUERY");
$stmt->bindParam('param1', $param1);
$stmt->bindParam('param2', $param2);
$stmt->bindParam('param3', $param3);
$stmt->execute();
$result = fetchAll();
Сравним с тем же самым, что получается при использовании просто PDO::query:
$result = $DBH->query("SOME SQL QUERY WITH DATA")->fetchAll();
И ВСЕ :)
Кроме того, приготовленные запросы сложнее отлаживать, ибо финального запроса как такового просто не существует. А для обычных запросов всегда можно их вывести и посмотреть что там не так (где там кавычка пропущена, запятая и т.д.).
Однако, я так понимаю, второй вариант никак не защищает от инъекций, если данные в запросе заранее не были правильно экранированы.
Вопросы:
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Кто сталкивался или знает есть ли на PHP реализации торговли, управление остатками и тому подобное? Есть ли вообще в природе подобные проекты?...