O que o bind_param realiza?
Estou aprendendo sobre como evitar injeções de SQL e estou um pouco confuso.
Ao usar bind_param, não entendo o propósito. Na página de manual, encontrei este exemplo:
$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;
Agora, supondo que essas 4 variáveis foram inseridas pelo usuário, não entendo como isso impede as injeções de SQL. Pelo meu entendimento, eles ainda podem inserir o que quiserem lá.
Eu também não consigo encontrar uma explicação para o'sssd'
lá. O que isso faz? É isso que faz com que seja seguro?
Pergunta final: Eu li em outra pergunta quemysqli_real_escape_string
está obsoleto, mas não diz isso no manual. Como está depreciado? Não pode mais escapar de caracteres especiais por algum motivo?
Nota: Esta questão explicou o que o bind_param faz, mas eu ainda não entendo porque é mais seguro ou protegido.Explicação de Bind_param