Я хочу знать, могу ли я использовать mysqli_real_escape_string на втором пути. Обычно я использую его следующим образом:
$name = $_POST['name'];
$nameSecure = mysqli_real_escape_string($name);
$sql = "SELECT * FROM persions WHERE firstname = {$name}";
$con->query($sql);
Но когда у меня есть больше $ _POST, я могу использовать mysqli_real_escape_string следующим образом:
$name = $_POST['name'];
$sql = "SELECT * FROM persions WHERE firstname = {$name}";
$con->query(mysqli_real_escape_string($sql));
Есть ли различия между этими двумя методами? Actualy, я не видел, чтобы кто-то использовал безопасный путь. Могу ли я использовать безопасный способ и есть ли какое-либо различие в безопасности между этими двумя методами?
Есть ли различия между этими двумя методами?
Да. Первый метод просто ускользает от строки $name
а второй - для всей строки запроса.
Хотя это не проблема для вашего конкретного запроса, это может быть проблемой для запросов, таких как:
SELECT * FROM table WHERE name = 'string';
Поскольку mysqli_real_escape_string
избежит кавычек, в результате чего mysqli_real_escape_string
запрос:
SELECT * FROM table WHERE name = \'string\';
В соответствующей заметке я бы посоветовал вам прочитать о подготовленных заявлениях.
foreach
. Довольно много примеров, найденных в Интернете. Может быть, даже array_map()
.
foreach
?