sql >> Databáze >  >> RDS >> Mysql

pdo připravit jednoduché uvozovky

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.




  1. Zlepšení výkonu Galera Cluster pro MySQL nebo MariaDB

  2. Odesílání dat z React do MySQL

  3. Vložit poddotaz do Výběrového dotazu

  4. Složený primární klíč v django