Rumah > pembangunan bahagian belakang > tutorial php > Bagaimanakah Saya Boleh Menggunakan LIKE '%{Var}%' dengan Selamat dengan Penyata yang Disediakan dalam SQL?

Bagaimanakah Saya Boleh Menggunakan LIKE '%{Var}%' dengan Selamat dengan Penyata yang Disediakan dalam SQL?

Susan Sarandon
Lepaskan: 2024-12-15 12:02:11
asal
542 orang telah melayarinya

How Can I Safely Use LIKE '%{Var}%' with Prepared Statements in SQL?

Menggunakan Penyata Disediakan dengan LIKE '%{Var}%' Dengan Berkesan

Apabila bekerja dengan input pengguna yang dibersihkan dalam pertanyaan SQL, adalah disyorkan untuk menggunakan kenyataan yang disediakan untuk mengurangkan risiko serangan suntikan SQL. Walau bagaimanapun, menggunakan corak LIKE '%{Var}%' dengan pernyataan yang disediakan boleh menimbulkan cabaran.

Pendekatan Salah:

Sintaks berikut akan menghasilkan ralat:

$sql = 'SELECT * FROM `users` WHERE username LIKE \'%{?}%\' ';
Salin selepas log masuk
$sql = 'SELECT * FROM `users` WHERE username LIKE %{?}% ';
Salin selepas log masuk

Betul Pendekatan:

Untuk menggunakan LIKE '%{Var}%' dengan pernyataan yang disediakan dengan betul, ikuti langkah berikut:

  1. Buat pembolehubah rentetan untuk memegang corak LIKE:
$likeVar = "%" . $ yourParam . "%";
Salin selepas log masuk
  1. Sediakan pertanyaan menggunakan pemegang tempat:
$ stmt = $ mysqli -> prepare('SELECT * FROM REGISTRY WHERE name LIKE ?');
Salin selepas log masuk
  1. Ikat pembolehubah LIKE kepada pemegang tempat:
$stmt -> bind_param('s', $likeVar);
Salin selepas log masuk
  1. Laksanakan pertanyaan:
$stmt -> execute();
Salin selepas log masuk

Penjelasan:

  • $likeVar: Pembolehubah ini mengandungi corak LIKE dengan parameter yang disediakan pengguna diawali dan diakhiri dengan kad bebas.
  • prepare() vs. query(): prepare() mencipta objek pernyataan yang boleh dilaksanakan berbilang kali dengan parameter yang berbeza, manakala query() melaksanakan pertanyaan secara langsung.
  • bind_param(): Kaedah ini mengaitkan parameter pernyataan yang disediakan dengan nilai pembolehubah masing-masing. Dalam kes ini, pemegang tempat (?) terikat kepada $likeVar.
  • execute(): Setelah parameter terikat, execute() melaksanakan pertanyaan dengan parameter yang ditentukan.

Dengan mengikut langkah ini, anda boleh menggunakan LIKE '%{Var}%' dengan selamat dalam pertanyaan SQL anda sambil mengekalkan amalan terbaik keselamatan.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menggunakan LIKE '%{Var}%' dengan Selamat dengan Penyata yang Disediakan dalam SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan