Rumah >pangkalan data >tutorial mysql >Mengapa Pertanyaan PDO LIKE Saya Gagal, dan Bagaimana Saya Boleh Membetulkannya?
Melaksanakan Pertanyaan LIKE dalam PDO
Melaksanakan pertanyaan LIKE dalam PDO mungkin menimbulkan cabaran. Pertimbangkan contoh pertanyaan:
$query = "SELECT * FROM tbl WHERE address LIKE '%?%' OR address LIKE '%?%'"; $params = array($var1, $var2); $stmt = $handle->prepare($query); $stmt->execute($params);
Walaupun kesahihan sambungan PDO dan fungsi pertanyaan lain, pertanyaan LIKE mungkin gagal mengembalikan hasil.
Membetulkan Sintaks
Untuk membetulkan pertanyaan, pastikan tanda % disertakan dalam tatasusunan $params, bukannya pertanyaan:
$query = "SELECT * FROM tbl WHERE address LIKE ? OR address LIKE ?"; $params = array("%$var1%", "%$var2%"); $stmt = $handle->prepare($query); $stmt->execute($params);
Memahami Isu
Dalam pertanyaan asal, tanda % diletakkan dalam pertanyaan itu sendiri. Walau bagaimanapun, apabila pertanyaan disediakan, nilai daripada $params dipetik di dalam rentetan yang telah dipetik. Ini menghasilkan pertanyaan seperti:
SELECT * FROM tbl WHERE address LIKE '%"foo"%' OR address LIKE '%"bar"%'
Pertanyaan ini tidak akan mengembalikan sebarang hasil kerana nilai tidak dilepaskan dengan betul. Dengan meletakkan tanda % dalam tatasusunan $params, tanda tersebut menjadi sebahagian daripada nilai yang dilarikan dan pertanyaan akan dilaksanakan dengan betul.
Atas ialah kandungan terperinci Mengapa Pertanyaan PDO LIKE Saya Gagal, dan Bagaimana Saya Boleh Membetulkannya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!