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
630 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!

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