Rumah >pangkalan data >tutorial mysql >Bagaimana Menggunakan Pernyataan yang Disediakan dengan Selamat dengan Pertanyaan LIKE dalam PHP?

Bagaimana Menggunakan Pernyataan yang Disediakan dengan Selamat dengan Pertanyaan LIKE dalam PHP?

Linda Hamilton
Linda Hamiltonasal
2025-01-16 11:07:57556semak imbas

How to Safely Use Prepared Statements with LIKE Queries in 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!

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