Rumah >pembangunan bahagian belakang >tutorial php >Bolehkah mysql_real_escape_string() Digunakan dengan Selamat dengan Penyata Disediakan Tersuai?

Bolehkah mysql_real_escape_string() Digunakan dengan Selamat dengan Penyata Disediakan Tersuai?

Patricia Arquette
Patricia Arquetteasal
2024-11-19 06:04:02867semak imbas

Can mysql_real_escape_string() Be Used Safely with Custom Prepared Statements?

Adakah mysql_real_escape_string() Mempunyai Cacat Tidak Boleh Dibetulkan?

Sesetengah skeptik berpendapat bahawa fungsi mysql_real_escape_string() secara asasnya melindungi SQL dan pertanyaan tidak boleh dipercayai . Mereka menunjukkan artikel lapuk sebagai bukti.

Bolehkah Ia Digunakan untuk Penyata Disediakan Tersuai?

Walaupun terdapat kebimbangan ini, masih mungkin untuk memanfaatkan mysql_real_escape_string() untuk mencipta kenyataan yang disediakan tersuai. Walau bagaimanapun, ia memerlukan perhatian yang teliti terhadap pengendalian charset.

Penyelesaian:

Menurut dokumentasi MySQL C API untuk mysql_real_escape_string(), anda harus menggunakan mysql_set_character_set() untuk menetapkan set watak. Ini memastikan ia turut mempengaruhi set aksara yang digunakan oleh mysql_real_escape_string().

Contoh Kod:

#include <mysql.h>

int main() {
  MYSQL *conn = mysql_init(NULL);
  mysql_real_connect(conn, "localhost", "user", "password", "database", 0, NULL, 0);

  // Change the encoding using mysql_set_charset()
  mysql_set_charset(conn, "utf8");

  // Create a custom prepared statement using mysql_real_escape_string()
  char query[1024];
  mysql_real_escape_string(conn, query, "SELECT * FROM users WHERE username='test'", sizeof(query));

  // Execute the query
  mysql_query(conn, query);

  mysql_close(conn);
  return 0;
}

Dengan mengikuti pendekatan ini dan mengelakkan SET NAMA/SET SET KARAKTER , anda boleh menggunakan mysql_real_escape_string() dengan berkesan untuk melindungi pertanyaan SQL anda daripada suntikan.

Atas ialah kandungan terperinci Bolehkah mysql_real_escape_string() Digunakan dengan Selamat dengan Penyata Disediakan Tersuai?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn