sql >> Database teknologi >  >> RDS >> Mysql

pdo forberede undslippende enkelt citater

Det hjælper kun med enkelte anførselstegn, hvis du laver parametriserede forberedte sætninger, ellers er alt, hvad du gør, strengsammenkædning og skal være underlagt korrekt udformning af din SQL.

Prøv noget 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) {
    ...
}

Dette giver dig også den ekstra fordel ved at afbøde SQL-injektionsangreb.

Hvis du vil gå et skridt videre og håndhæve datatyper, kan du bruge bindValue() eller bindParam()

som:

$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 lignende syntaks som bindParam() men binder kun værdien af ​​variablen på tidspunktet for binding til parameteren i stedet for værdien af ​​variablen på tidspunktet for udførelse af sætningen.




  1. PostgreSQL deaktiver mere output

  2. MySQL Indsæt i Vælg

  3. MySQL Update Column fra anden kolonne i samme tabel

  4. SQL Pivot med flere kolonner