Laksanakan LIKE Query dalam PDO
Apabila bekerja dengan pertanyaan LIKE dalam PDO, adalah penting untuk memahami cara menggabungkan ruang letak dan mengikat pembolehubah dengan betul. Artikel ini menangani masalah yang dihadapi oleh pengguna yang melaksanakan pertanyaan LIKE dalam PDO, yang mana pertanyaan mereka gagal mengembalikan hasil.
Pertanyaan asal, seperti yang disediakan oleh pengguna, cuba menggunakan ruang letak dengan tanda peratusan yang dilampirkan:
$query = "SELECT * FROM tbl WHERE address LIKE '%?%' OR address LIKE '%?%'"; $params = array($var1, $var2);
Walau bagaimanapun, pendekatan ini tidak betul. Tanda peratusan harus dimasukkan dalam pembolehubah bind, bukan dalam pertanyaan itu sendiri:
$query = "SELECT * FROM tbl WHERE address LIKE ? OR address LIKE ?"; $params = array("%$var1%", "%$var2%");
Dengan melampirkan nilai pembolehubah dengan tanda peratusan dalam pembolehubah bind, pertanyaan yang dihasilkan memastikan klausa LIKE akan mencari alamat yang mengandungi perkataan yang ditentukan. Tanpa pelarasan ini, pertanyaan akan menghasilkan sesuatu seperti:
SELECT * FROM tbl WHERE address LIKE '%"foo"%' OR address LIKE '%"bar"%'
Pertanyaan ini akan gagal kerana tanda peratusan dibenamkan dalam petikan, menyebabkan carian mencari alamat yang mengandungi teks tepat "foo" atau " bar", bukan perkataan yang mengandungi istilah tersebut.
Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan Pertanyaan LIKE dengan Pemegang Tempat dalam PDO?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!