Co osiąga bind_param?
Uczę się unikać wstrzykiwań SQL i jestem trochę zdezorientowany.
Podczas używania bind_param nie rozumiem celu. Na stronie podręcznika znalazłem następujący przykład:
$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;
Teraz, zakładając, że te 4 zmienne zostały wprowadzone przez użytkownika, nie rozumiem, jak to zapobiega zastrzykom SQL. Rozumiem, że wciąż mogą tam wprowadzać, co chcą.
Nie mogę też znaleźć wyjaśnienia dla'sssd'
tam. Co to robi? Czy to sprawia, że jest bezpieczny?
Ostatnie pytanie: przeczytałem na innym pytaniu, któremysqli_real_escape_string
jest przestarzałe, ale nie mówi tego w instrukcji. Jak to jest przestarzałe? Czy z jakiegoś powodu nie może już uniknąć specjalnych znaków?
Uwaga: To pytanie wyjaśniło, co robi bind_param, ale wciąż nie rozumiem, dlaczego jest bezpieczniejsze lub bardziej chronione.Wyjaśnienie Bind_param