sql >> Database >  >> RDS >> Mysql

pdo voorbereiden ontsnappende enkele aanhalingstekens

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.




  1. HAS_DBACCESS() – Ontdek of een gebruiker toegang heeft tot een database in SQL Server

  2. Hoe SQL Server T-SQL-functie te gebruiken SUM:5 use-cases

  3. Voorbeelden van het converteren van 'time' naar 'datetime' in SQL Server (T-SQL)

  4. WAMP Server V 2.5-pictogram is oranje, reageert niet en geen menu