S jednoduchými uvozovkami to pomáhá, pouze pokud děláte parametrizované připravené příkazy, jinak vše, co děláte, je řetězení řetězců a musíte podléhat správnému vytvoření vašeho SQL.
Zkuste něco jako:
$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) {
...
}
To vám také poskytuje další výhodu zmírnění útoků SQL injection.
Pokud chcete jít o krok dále a vynutit datové typy, můžete použít bindValue()
nebo bindParam()
jako:
$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()
má podobnou syntaxi jako bindParam()
ale váže pouze hodnotu proměnné v době vazby na parametr, nikoli hodnotu proměnné v době provádění příkazu.