Rumah > pangkalan data > tutorial mysql > Bagaimanakah Penyata Disediakan Boleh Meningkatkan Kecekapan dan Keselamatan Carian LIKE?

Bagaimanakah Penyata Disediakan Boleh Meningkatkan Kecekapan dan Keselamatan Carian LIKE?

Susan Sarandon
Lepaskan: 2025-01-16 10:57:58
asal
286 orang telah melayarinya

How Can Prepared Statements Improve the Efficiency and Security of LIKE Searches?

Mengoptimumkan LIKE Carian dengan Penyata Disediakan

Pertanyaan pangkalan data menggunakan operator LIKE untuk pemadanan corak memerlukan pengendalian yang teliti untuk mengelakkan kelemahan dan memastikan prestasi. Penggunaan yang tidak betul boleh membawa kepada ralat.

Mari kita periksa beberapa pendekatan yang cacat:

<code class="language-sql">$sql = 'SELECT * FROM `users` WHERE username LIKE \'%{?}%\' ';</code>
Salin selepas log masuk

Ini gagal kerana bilangan pembolehubah dalam rentetan SQL tidak sepadan dengan parameter yang diberikan kepada bind_param().

<code class="language-sql">$sql = 'SELECT * FROM `users` WHERE username LIKE %{?}% ';</code>
Salin selepas log masuk

Ini mengakibatkan ralat sintaks disebabkan peletakan aksara kad bebas (%{}) yang salah dalam rentetan pertanyaan.

Kaedah yang betul menggunakan pernyataan yang disediakan, menggunakan pemegang tempat tanda soal dan mengikat pembolehubah dengan sewajarnya:

<code class="language-php">$likeVar = "%" . $yourParam . "%";
$stmt = $mysqli->prepare("SELECT * FROM REGISTRY where name LIKE ?");
$stmt->bind_param("s", $likeVar);
$stmt->execute();</code>
Salin selepas log masuk

Kod ini:

  1. Membina corak dengan menggabungkan tanda peratusan kepada input pengguna ($yourParam).
  2. Menyediakan pertanyaan dengan ? pemegang tempat.
  3. Mengikat rentetan corak ("s" untuk rentetan) menggunakan bind_param().
  4. Melaksanakan pernyataan yang disediakan.

Menggunakan pernyataan yang disediakan dengan LIKE menghalang suntikan SQL dan meningkatkan kecekapan pertanyaan.

Atas ialah kandungan terperinci Bagaimanakah Penyata Disediakan Boleh Meningkatkan Kecekapan dan Keselamatan Carian LIKE?. 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