Mysql
 sql >> Baza danych >  >> RDS >> Mysql

pdo przygotuj unikanie pojedynczych cudzysłowów

Pomaga w przypadku pojedynczych cudzysłowów tylko wtedy, gdy wykonujesz sparametryzowane przygotowane instrukcje, w przeciwnym razie wszystko, co robisz, to łączenie ciągów i musisz podlegać prawidłowemu stworzeniu kodu SQL.

Wypróbuj coś takiego:

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

Daje to również dodatkową korzyść polegającą na łagodzeniu ataków typu SQL injection.

Jeśli chcesz pójść o krok dalej i wymusić typy danych, możesz użyć bindValue() lub bindParam()

jak:

$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() ma podobną składnię do bindParam() ale wiąże tylko wartość zmiennej w momencie wiązania z parametrem, a nie wartość zmiennej w momencie wykonania instrukcji.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pobieranie ostatniego identyfikatora wstawiania dla mysql po wstawieniu

  2. Wiele formularzy i jedna strona przetwarzania

  3. php artisan migrować rzucanie [Wyjątek PDO] Nie można znaleźć sterownika — Korzystanie z Laravel

  4. Implementacja i projektowanie architektury systemu powiadomień z wykorzystaniem socket.io node.js i wiadomości przychodzących

  5. MySQL LEFT JOIN duplikuje wyniki