Het helpt alleen met enkele aanhalingstekens als u geparametriseerde voorbereide instructies doet, anders is alles wat u doet string aaneenschakeling en moet u uw SQL correct vormen.
Probeer iets als:
$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) {
...
}
Dit geeft u ook het extra voordeel dat u aanvallen met SQL-injectie kunt verminderen.
Als u een stap verder wilt gaan en gegevenstypen wilt afdwingen, kunt u bindValue()
gebruiken of bindParam()
zoals:
$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()
heeft een vergelijkbare syntaxis als bindParam()
maar bindt alleen de waarde van de variabele op het moment van binding aan de parameter in plaats van de waarde van de variabele op het moment van uitvoering van de instructie.