Что делает bind_param?
Я учусь избегать инъекций SQL, и я немного запутался.
При использовании bind_param я не понимаю цели. На странице руководства я нашел этот пример:
$stmt = mysqli_prepare($link, "INSERT INTO CountryLanguage VALUES (?, ?, ?, ?)");
mysqli_stmt_bind_param($stmt, 'sssd', $code, $language, $official, $percent);
$code = 'DEU';
$language = 'Bavarian';
$official = "F";
$percent = 11.2;
Теперь, предполагая, что эти 4 переменные были введены пользователем, я не понимаю, как это предотвращает инъекции SQL. Насколько я понимаю, они все еще могут вводить туда все, что хотят.
Я также не могу найти объяснение'sssd'
там. Что оно делает? Это то, что делает его безопасным?
Последний вопрос: я прочитал еще один вопросmysqli_real_escape_string
устарела, но это не сказано в руководстве. Как это устарело? Не может ли он по какой-то причине избежать экранирования?
Примечание. Этот вопрос объясняет, что делает bind_param, но я до сих пор не понимаю, почему он безопаснее или более защищен.Объяснение Bind_param