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
Susan Sarandonasal
2024-12-15 12:02:11543semak imbas

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 \'%{?}%\' ';
$sql = 'SELECT * FROM `users` WHERE username LIKE %{?}% ';

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 . "%";
  1. Sediakan pertanyaan menggunakan pemegang tempat:
$ stmt = $ mysqli -> prepare('SELECT * FROM REGISTRY WHERE name LIKE ?');
  1. Ikat pembolehubah LIKE kepada pemegang tempat:
$stmt -> bind_param('s', $likeVar);
  1. Laksanakan pertanyaan:
$stmt -> execute();

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:
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