Det hjälper bara med enstaka citattecken om du gör parametriserade förberedda satser, annars är allt du gör är strängsammansättning och måste vara föremål för korrekt formning av din SQL.
Prova något som:
$sql = "INSERT INTO anagrafiche SET
id_ndg = :protocol,
nick = :nick,
nome = :nome,
...
";
$params = array(
':protocol' => $protocol,
':nick' => $nick,
':nome' => $nome,
...
);
try{
$s = $pdo->prepare($sql);
$s->execute($params);
} catch (PDOException $e) {
...
}
Detta ger dig också den extra fördelen att mildra SQL-injektionsattacker.
Om du vill gå ett steg längre och genomdriva datatyper kan du använda bindValue()
eller bindParam()
gillar:
$sql = "INSERT INTO anagrafiche SET
id_ndg = :protocol,
nick = :nick,
nome = :nome,
...
";
try{
$s = $pdo->prepare($sql);
$s->bindParam(':protocol', $protocol, PDO::PARAM_ST);
$s->bindParam(':nick', $nick, PDO::PARAM_ST);
$s->bindParam(':nome', $nome, PDO::PARAM_ST);
...
$s->bindParam(':some_integer', $some_integer, PDO::PARAM_INT);
...
$s->execute();
} catch (PDOException $e) {
...
}
bindValue()
har liknande syntax som bindParam()
men binder bara värdet på variabeln vid tidpunkten för bindning till parametern snarare än värdet på variabeln vid tidpunkten för satsens körning.