Подготовленные запросы и PDO?

Чё-то запутался маленько, помогите распутаться.
И в PDO и mysqli есть обычные запросы и есть подготовленные. Пример на PDO подготовленный:
$stmt = $dbh->prepare("INSERT INTO REGISTRY (name, value) VALUES (:name, :value)");
$name = 'one'; $value = 1;
$stmt->bindParam(':name', $name);
$stmt->bindParam(':value', $value);
$stmt->execute();

И неподготовленный:
$count = $dbh->exec("DELETE FROM fruit WHERE colour = 'red'");

Подготовленный будет дороже чем неподготовленный если у нас 1 запрос и наоборот если серия одинаковых запросов.
А как быть с безопасностью неподготовленного запроса? Ведь в нём нет BindParam значит нет экранирования? Или в этом случае надо обязательно $conn->quote($string) ??
  • Вопрос задан
  • 2947 просмотров
Решения вопроса 2
Валерий Селицккий вы не правы. Читаем мануал:

Если вы используете эту функцию для построения SQL запросов, настоятельно рекомендуется пользоваться методом PDO::prepare() для подготовки запроса с псевдопеременными вместо использования PDO::quote()
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
Ничто не мешает подготавливать DELETE запрос :-) И наоборот. Ничего не спасет от необходимости использовать PDO::quote.
Типичный пример - необходимость подстановок в мутациях данных с помощью Doctrine2 Migrations в моментах, когда нужно конкатенировать, например, списки строковых id.
Ответ написан
gluck59
@gluck59
Виртуальный глюк
Привет из будущего :)
Вас спасет $sth->debugDumpParams();
Просто напишите эту строку безо всяких вардампов, и все получится.630e115ba1ec0257763223.png
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽
25 апр. 2024, в 16:12
2000 руб./за проект
25 апр. 2024, в 16:08
130000 руб./за проект