Rumah >pangkalan data >tutorial mysql >Bagaimana Menggunakan Pernyataan yang Disediakan dengan Selamat dengan Pertanyaan LIKE dalam PHP?
Memahami kenyataan yang disediakan dan pertanyaan LIKE
Dalam PHP, apabila menggunakan pernyataan yang disediakan untuk pertanyaan SUKA, parameter rentetan mesti dikendalikan dengan teliti untuk mengelakkan kemungkinan ralat. Pernyataan yang disediakan menggunakan ruang letak (?) untuk menghalang suntikan SQL sambil meningkatkan prestasi.
Kes 1: Gunakan '%{$var}%' untuk memadankan nama pengguna
Kod berikut:
<code class="language-php">$sql = 'SELECT * FROM `users` WHERE username LIKE \'%{?}%\' ';</code>
melemparkan ralat kerana pemegang tempat ? tidak ditakrifkan dengan betul dalam pernyataan SQL yang disediakan.
Kes 2: Gunakan %{?}% untuk memadankan nama pengguna
Kod berikut:
<code class="language-php">$sql = 'SELECT * FROM `users` WHERE username LIKE %{?}% ';</code>
juga akan gagal kerana sintaksnya tidak sah. Tanda peratus (%) tidak boleh digunakan secara langsung sebagai pemegang tempat dalam pernyataan yang disediakan.
Penyelesaian: Gunakan pembolehubah LIKE yang digabungkan
Untuk menyelesaikan isu ini, gunakan pembolehubah LIKE yang digabungkan:
<code class="language-php">$likeVar = "%" . $yourParam . "%"; $stmt = $mysqli->prepare("SELECT * FROM REGISTRY where name LIKE ?"); $stmt->bind_param("s", $likeVar); $stmt->execute();</code>
Dalam contoh ini, $likeVar dibina dengan menggabungkan tanda peratus dengan input pengguna $yourParam. Keadaan LIKE kemudian menggunakan pemegang tempat , yang terikat pada rentetan bercantum $likeVar semasa pengikatan parameter.
Pendekatan ini memastikan bahawa tanda peratus dianggap sebagai aksara literal dan bukannya elemen sintaks dalam pernyataan yang disediakan. Ia juga membenarkan carian tidak peka huruf besar-besaran dengan memastikan $likeVar mengandungi aksara kad bebas yang betul.
Atas ialah kandungan terperinci Bagaimana Menggunakan Pernyataan yang Disediakan dengan Selamat dengan Pertanyaan LIKE dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!