Melaksanakan Pertanyaan LIKE dengan PDO
Apabila menggunakan operator LIKE dalam Structured Query Language (SQL), tanda peratus (%) digunakan sebagai aksara kad bebas untuk memadankan sifar atau lebih kejadian subrentetan. Dalam PHP dengan PDO (Objek Data PHP), pengendali LIKE boleh digunakan untuk melakukan padanan corak terhadap lajur pangkalan data.
Perumusan Masalah
Seorang pengguna menghadapi masalah semasa cuba menggunakan operator LIKE dalam PDO. Walaupun memastikan bahawa nilai pembolehubah mengandungi istilah carian yang dikehendaki dan mengesahkan kefungsian pertanyaan PDO lain, pertanyaan LIKE tidak mengembalikan hasil.
Sintaks Pertanyaan Betul
Untuk menyelesaikan masalahnya, adalah penting untuk menyertakan nilai pembolehubah yang dipadankan dengan peratus (%) kad bebas dalam tatasusunan $params dan bukannya membenamkannya dalam rentetan pertanyaan itu sendiri. Berikut ialah sintaks yang betul:
$query = "SELECT * FROM tbl WHERE address LIKE ? OR address LIKE ?"; $params = array("%$var1%", "%$var2%"); $stmt = $handle->prepare($query); $stmt->execute($params);
Penjelasan
Dalam pertanyaan asal, % kad bebas telah dibenamkan dalam rentetan pertanyaan. Walau bagaimanapun, PDO menyediakan pertanyaan dengan memetik nilai, menghasilkan pertanyaan yang menyerupai:
SELECT * FROM tbl WHERE address LIKE '%"foo"%' OR address LIKE '%"bar"%'
Sintaks yang salah ini menghalang % kad bebas daripada berfungsi dengan betul sebagai kad bebas, menyebabkan tiada padanan ditemui. Sebaliknya, dengan memasukkan kad bebas dalam tatasusunan $params, tanda peratusan tidak dipetik, membenarkan mereka melaksanakan fungsi pemadanan kad bebas yang dimaksudkan.
Atas ialah kandungan terperinci Bagaimana Menggunakan Operator LIKE dengan PDO dengan betul dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!