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

Memfilter kueri MySQL di PHP

Satu-satunya cara adalah menghindari data yang dikirimkan pengguna dengan benar. Yang lain telah menunjukkan beberapa cara untuk melakukannya.

Ada cara lain:pernyataan siap dan placeholder. Pernyataan yang disiapkan didukung oleh setiap modern Antarmuka basis data PHP, termasuk mysqli dan PDO .

Mari kita gunakan PDO sebagai demonstrasi. Katakanlah kita ingin memperbarui sedikit data dalam tabel foo diajukan oleh seorang pengguna.

$sql = 'UPDATE foo SET bar = ? WHERE user_id = ?';
$sh = $db->prepare($sql);
$sh->execute(array( $_POST['bar'], $_SESSION['user_id'] ));

Variabel dalam array diteruskan ke execute ganti placeholder tanda tanya dalam kueri. Ketika ini terjadi, mereka secara otomatis lolos dan dikutip . Anda tidak perlu melarikan diri secara manual untuk membuatnya aman untuk dimasukkan ke dalam database!

Di sisi lain, Anda masih perlu memfilternya untuk konten yang tidak diharapkan, seperti HTML, Javascript, huruf di mana Anda mengharapkan angka, dll. Membuat data aman untuk dimasukkan ke dalam database adalah hanya setengah dari pertempuran .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PDO Bind Params tergantung pada apakah mereka ada dalam kueri

  2. Menyimpan karakter latin serbia dalam database

  3. Cara menonaktifkan cache kueri dengan mysql.connector

  4. Bisakah saya menerapkan batasan keunikan secara kondisional?

  5. Bagaimana cara memperbarui jika ada, masukkan jika tidak (AKA upsert atau merge) di MySQL?