@CodeDes3D

Всегда ли нужен подготовленный запрос в PHP?

Например я пишу функцию, которая не принимает никаких значений, ничего не берет с глобалки, не принимает данные форм и не использует предустановленные константы/переменные PHP. Можно тогда не использовать подготовленный запрос? и может даже нужно?
  • Вопрос задан
  • 2446 просмотров
Решения вопроса 1
FanatPHP
@FanatPHP
Чебуратор тега РНР
Я так понимаю, что речь о статических запросах вида
SELECT * FROM catalog WHERE parent=1

Такие запросы через prepare прогонять не обязательно.
НО, при этом очень желательно, чтобы запросы выполнялись через некое единое API, основанное на подготовленных выражениях, и программист внутри себя не ломал голову - использовать или нет. Использовать. Польза от такого решения на порядки перекрывает любые возможные плюсы других решений.

Пример:
$categories = $db->getAll("SELECT * FROM catalog WHERE parent=1");
$categories = $db->getAll("SELECT * FROM catalog WHERE parent=?i", $parent);

Как видим, при наличии единого API для выполнения запросов, у программиста не возникает ненужных вопросов.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
laska
@laska
PHP/JS разработчик
Сложный вопрос. Вообще если в 1000 мест вы используете подготовленные запросы, то в 1001 месте тоже их стоит использовать.

Скорее всего если вы решите написать в этом месте обычный запрос, то в случае действительно хорошего кода надо написать комментарий вроде: "По результатам тестов (ссылка на документацию) было решено отказаться от подготовленных запросов в связи с 5% уменьшением нагрузки на сервер".

Но это только мое мнение, тут все очень условно.
Ответ написан
Комментировать
65536
@65536
Филосовский вопрос. В идеале было бы хорошо если бы вообще все запросы строились через какой-то интерфейс, а ескейпилось и препейрилось все на уровне реализации того, что за этим интерфейсом. Но по-моему еще ни в одной системе моделей не придумали универсальный синтаксис для запросов любой сложности с кучей скобок и операторов, поэтому везде (вроде) предоставляется возможность писать в сыром виде. А раз так, то запросы с заведомо безопасными данными можно сырыми и писать как есть. Хотя бы просто чтобы сократить писанину. Но если так писать, то только такие запросы, чтобы сам такой запрос своим видом однозначно говорил что для него не требуется обезвреживание. Это я для себя так придумал, не знаю как бы другие программисты это поняли глядя в мой код. Соглашений таких вроде бы нет.
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы