Mysql
 sql >> база данни >  >> RDS >> Mysql

pdo подготвя екраниращи единични кавички

Помага с единични кавички само ако правите параметризирани подготвени изрази, в противен случай всичко, което правите, е конкатенация на низове и трябва да бъдете обект на правилно формиране на вашия SQL.

Опитайте нещо като:

$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) {
    ...
}

Това също ви дава допълнителното предимство за смекчаване на атаки с инжектиране на SQL.

Ако искате да отидете още една стъпка по-далеч и да приложите типове данни, можете да използвате bindValue() или bindParam()

като:

$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() има подобен синтаксис на bindParam() но обвързва само стойността на променливата в момента на обвързване към параметъра, а не стойността на променливата в момента на изпълнение на оператора.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Какво е кардиналност в MySQL?

  2. Фатална грешка:Извикване на недефинирана функция getsqlvaluestring()

  3. Как да тествате избора за актуализиране в MySQL

  4. Проблем с MySQL:LEFT JOIN на празна таблица

  5. Създател на заявки на Laravel - повторна употреба на заявка с изменен израз where