Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

pdo mempersiapkan melarikan diri tanda kutip tunggal

Ini membantu dengan tanda kutip tunggal hanya jika Anda melakukan pernyataan yang disiapkan dengan parameter, jika tidak, yang Anda lakukan hanyalah penggabungan string dan harus tunduk pada pembentukan SQL Anda dengan benar.

Coba sesuatu seperti:

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

Ini juga memberi Anda keuntungan tambahan dalam mengurangi serangan injeksi SQL.

Jika Anda ingin melangkah lebih jauh dan menerapkan tipe data, Anda dapat menggunakan bindValue() atau bindParam()

seperti:

$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() memiliki sintaks yang mirip dengan bindParam() tetapi hanya mengikat nilai variabel pada saat mengikat parameter daripada nilai variabel pada saat eksekusi pernyataan.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Apakah sesi Flask-SQLAchemy thread-local ini menyebabkan server MySQL hilang kesalahan?

  2. PDO IN() Pernyataan Array DAN placeholder

  3. Menyortir data menurut tanggal saat ini

  4. PHP Apa charset default untuk pdo mysql?

  5. Bagaimana cara menggunakan sesi di dalam halaman web?