Was leistet bind_param?

Ich lerne das Vermeiden von SQL-Injektionen und bin ein bisschen verwirrt.

Wenn ich bind_param benutze, verstehe ich den Zweck nicht. Auf der Manualseite habe ich folgendes Beispiel gefunden:

$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;

Unter der Annahme, dass diese 4 Variablen vom Benutzer eingegeben wurden, verstehe ich nicht, wie dies SQL-Injektionen verhindert. Nach meinem Verständnis können sie immer noch eingeben, was sie wollen.

Ich kann auch keine Erklärung für das finden'sssd' da drin. Was tut es? Ist es das, was es sicherer macht?

Letzte Frage: Ich habe auf einer anderen Frage gelesen, dassmysqli_real_escape_string ist veraltet, wird aber im Handbuch nicht erwähnt. Wie ist es veraltet? Kann es aus irgendeinem Grund nicht mehr vor Sonderzeichen fliehen?

Hinweis: Diese Frage hat erklärt, was bind_param bewirkt, aber ich verstehe immer noch nicht, warum es sicherer oder geschützter ist.Bind_param Erklärung

Antworten auf die Frage(2)

Ihre Antwort auf die Frage