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

Tidak dapat menggunakan mysql_real_escape_string

Poin pertama:Jika Anda mendapatkan kesalahan dari mysql_real_escape_string() , itu karena Anda memanggil fungsi tersebut sebelum Anda terhubung ke database.

Sepertinya Anda terhubung ke database tepat sebelum Anda menjalankan kueri. Jadi, apa pun yang Anda lakukan sebelum memanggil mm_mysqlquery() fungsi tidak akan memiliki koneksi.

mysql_real_escape_string() fungsi membutuhkan koneksi langsung ke database, sehingga dapat melakukan pelolosan yang tepat sehubungan dengan rangkaian karakter koneksi. Jadi, Anda harus terhubung sebelum Anda melarikan diri.

Lebih baik tetap melakukannya, karena jika Anda membuat beberapa kueri selama satu permintaan PHP, lebih sedikit overhead untuk menghubungkan sekali dan gunakan koneksi yang sama untuk semua pertanyaan Anda.

Kedua, jangan menerima saran untuk menggunakan addslashes() -- itu tidak melakukan hal yang sama seperti mysql_real_escape_string() . Keduanya tidak dapat dipertukarkan. Anda harus membiasakan menggunakan mysql_real_escape_string() .

Ketiga, sani() . Anda fungsi menunjukkan kesalahpahaman umum.

function sani($string){     
  $string = strip_tags($string); 
  $string = htmlspecialchars($string); 
  $string = trim(rtrim(ltrim($string))); 
  $string = mysql_real_escape_string($string);
  return $string;
}

Kesalahpahaman yang umum adalah bahwa Anda memerlukan semua fungsi ini untuk membuat string aman dalam pernyataan SQL. Anda tidak. Hanya mysql_real_escape_string() diperlukan. Semua fungsi lain dalam contoh ini tidak melakukan apa pun untuk melindungi dari injeksi SQL.

Fungsi tersebut berguna jika Anda menampilkan string dalam presentasi HTML dan Anda ingin mengurangi risiko serangan XSS, tetapi kemudian mysql_real_escape_string() tidak relevan.

Gunakan setiap jenis metode sanitasi dalam konteks yang sesuai.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Program saya tidak dapat menyimpan nilai di MySQL menggunakan konektor mysql lib dengan Python

  2. Penanganan pengecualian EntityManager di kacang sesi

  3. Apakah nama kolom dan tabel peka huruf besar/kecil di MySQL?

  4. MySQL ERROR 1290 (HY000) --secure-file-priv option

  5. Menguji koneksi database Entity Framework