Очевидно, что нет, и если вы действительно читали это в книге или учебнике, вы должны автоматически отказаться от него для дальнейшего использования.
Тем не менее, это может быть практический способ генерировать выходные данные, которые требуют дальнейшей обработки. Пожалуйста, сравните:
echo '<p>Hello, <strong></strong>' . htmlspecialchars($name) . ', welcome to ' . htmlspecialchars($place). '</p>';
echo sprintf('<p>Hello, <strong>%s</strong>, welcome to %s</p>',
htmlspecialchars($name),
htmlspecialchars($place)
);
То же самое относится и к другим видам вывода, таким как код SQL, но, конечно, вам все равно нужно что-то делать для ввода, чтобы сделать его безопасным: sprintf () - это обычная строковая функция, которая не знает SQL и баз данных.
Обратите внимание, что параметры связывания используют похожий синтаксис:
// Fictional DB abstraction layer
$sql = 'SELECT foo_id
FROM foo
WHERE name=:name AND status=:status';
$params = array(
'name' => $name,
'status' => $status,
);
$result = $db->run($sql, $params);
Вот почему мне особенно легче использовать те библиотеки БД, которые предоставляют этот синтаксис, как PDO.