LIKE
Carian dengan Penyata DisediakanPertanyaan 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>
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>
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>
Kod ini:
$yourParam
).?
pemegang tempat.bind_param()
.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!