sql >> Databasteknik >  >> RDS >> Mysql

pdo förbered flyktiga enstaka citattecken

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.




  1. Hur TO_CHAR() fungerar i MariaDB

  2. SQL-uppdateringsfråga med joins

  3. hur man hittar exakt data mellan valt diagonalområde i mysql-frågan

  4. Analysera tabell- och kolumnnamn från SQL/HQL Java