Apabila menggunakan pernyataan yang disediakan, adalah penting untuk menggabungkan pembolehubah dengan pertanyaan SQL dengan betul. Sintaks yang salah boleh membawa kepada ralat, seperti yang ditemui dalam serpihan kod berikut:
$sql = 'SELECT * FROM `users` WHERE username LIKE \'%{$var}%' '; // Error: Number of variables doesn't match number of parameters $sql = 'SELECT * FROM `users` WHERE username LIKE %{?}% '; // Error: Wrong SQL
Untuk mengelakkan ralat ini, gunakan langkah berikut:
$likeVar = "%" . $yourParam . "%";
$stmt = $mysqli->prepare("SELECT * FROM REGISTRY where name LIKE ?");
$stmt->bind_param("s", $likeVar);
Dalam contoh ini, $likeVar mengandungi nilai yang akan dicari dengan kad bebas ("%...%"). Mengikatnya pada jenis parameter s (rentetan) memastikan ia dikendalikan dengan betul dalam pertanyaan pangkalan data.
Jika anda memerlukan carian tidak sensitif huruf besar-besaran, anda boleh menambah klausa COLLATE utf8mb4_bin pada anda pertanyaan:
$stmt = $mysqli->prepare("SELECT * FROM REGISTRY where name LIKE ? COLLATE utf8mb4_bin");
Atas ialah kandungan terperinci Bagaimana untuk Menggabungkan Pembolehubah dengan Benar dengan Pernyataan yang Disediakan dalam SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!