@BatorOV

Чем вы пользуетесь, sprintf или оператором(точкой) для внедрения параметров в строку в PHP?

Как лучше?
sprintf("SELECT 'id' WHERE 'sum' > %d", $param);
или
"SELECT `id` WHERE `sum`>" . $param ?

Лично я использую второй способ. Он быстрее.
  • Вопрос задан
  • 427 просмотров
Решения вопроса 1
DevMan
@DevMan
лучше - использовать подготовленные выражения.
если абстрагироваться от sql, то предпочитаю второй вариант из-за большей наглядности/легкости чтения.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@unity_ultra_hardcore
если подстановки идут в середине строки или их больше одной - использую sprintf.
Вот такой код мне совсем не нравится (пример придуман из головы):
$str = 'select `field` from `' . $table . '` where id = "' . $val . '"';

Особенно, мне не нравятся сочетания кавычек перед/после $table
Так куда лучше:
$str = sprintf(
    "select `%s` from `%s` where `id` = '%d'",
    $field,
    $table,
    $id
);

Логика такова: при использовании формата, у нас целевая строка цельная, мы можем быть уверенными, что в ней нет никаких операторов (чем меньше операторов, тем легче читать) и неверного их сочетания.
В строке с конкатенацией у нас куча операторов, в которых мы можем ошибиться - попробуйте навскидку изменить тип кавычек в этой строке с двойных на одинарные.
Ответ написан
Комментировать
iCoderXXI
@iCoderXXI
React.JS/FrontEnd engineer
Я пользую DBSimple для этих целей, очень удобно.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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