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 の説明