Ele ajuda com aspas simples apenas se você fizer instruções preparadas parametrizadas, caso contrário, tudo o que você está fazendo é concatenação de strings e precisa estar sujeito à formação adequada de seu SQL.
Tente algo como:
$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) {
...
}
Isso também oferece a vantagem adicional de mitigar os ataques de injeção de SQL.
Se você quiser dar um passo adiante e impor tipos de dados, você pode usar
bindValue()
ou bindParam()
Curti:
$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()
tem sintaxe semelhante a bindParam()
mas apenas vincula o valor da variável no momento da vinculação ao parâmetro, em vez do valor da variável no momento da execução da instrução.