Задать вопрос
@Dark_Dante

PDO::prepare или PDO::query?

Здравствуйте.
Подскажите, есть ли смысл использовать PD::prepare вместо PDO::query?
Слышал, что подготовленные запросы к базе предпочтительнее, так как на большом количестве однотипных запросов prepare дает прирост в скорости.
Правда ли что prepare не имеет смысла использовать для INSERT/UPDATE?
Что лучше использовать при биндинге входных значений- именованные (:param) или неименованные (?) псевдопеременные?
Дает ли использование подготовленных запросов полную защиту от sql-инъекций?
Заранее спасибо
  • Вопрос задан
  • 1771 просмотр
Подписаться 3 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Skillbox
    Веб-разработчик на PHP
    9 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 3
BuriK666
@BuriK666
Компьютерный псих
Подскажите, есть ли смысл использовать PD::prepare вместо PDO::query?
query не заменяет prepare

Слышал, что подготовленные запросы к базе предпочтительнее, так как на большом количестве однотипных запросов prepare дает прирост в скорости.
php.net/manual/ru/pdo.query.php
Если запрос будет запускаться многократно, для улучшения производительности приложения имеет смысл этот запрос один раз подготовить методом PDO::prepare(), а затем запускать на выполнение методом PDOStatement::execute() столько раз, сколько потребуется.

Правда ли что prepare не имеет смысла использовать для INSERT/UPDATE?
Только его и стоит использовать т.к. можно сделать биндинг параметров. (см.ниже)

Что лучше использовать при биндинге входных значений- именованные (:param) или неименованные (?) псевдопеременные?
Не имеет значения.

Дает ли использование подготовленных запросов полную защиту от sql-инъекций?
Да.
Ответ написан
edli007
@edli007
full stack, team lead
я конечно на мега спеца по SQL не претендую, но

PDO::prepare - подготавливает выражение на сервере, которое можно использовать многократно, т.е. 1 запрос или 100 с разными параметрами, уже не так важно.

PDO::query - подготавливает и использует выражение на один раз, для всех последующих запросов, даже однотипных, запрос будет строится с нуля.
Ответ написан
@Panda_Tamara
Разработчик проектов под UMI.CMS
Защита будет. Насколько полная вам смогут только люди, занимающиеся sql-инъекциями. В этом вопросе придется положиться на разрабов. Если исходить из экранирования, которое обеспечивается использованием плейсхолдеров - то да, по идее полное.

Есть ли смысл использовать PD::prepare вместо PDO::query? Давайте исходить из того, что в мануалах к расширению везде указано использование prepare, даже для однократных, не повторяющихся запросов.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
IT ATLAS Москва
от 250 000 до 500 000 ₽