Penyata PHP PDO Disediakan -- MySQL LIKE Query
Apabila bekerja dengan PDO yang disediakan pernyataan dalam PHP, melaksanakan pertanyaan LIKE menggunakan pemacu MySQL boleh mencabar. Artikel ini akan meneroka sintaks yang diperlukan dan menyediakan penyelesaian untuk membantu pembangun dalam menyelesaikan sebarang isu yang mungkin mereka hadapi.
Perumusan Masalah
Seorang pembangun sedang cuba melaksanakan carian pertanyaan menggunakan pemacu MySQL PDO. Pertanyaan berfungsi dengan sempurna apabila dilaksanakan terus melalui klien MySQL, tetapi ia gagal mengembalikan sebarang hasil apabila dilaksanakan menggunakan PHP.
Sintaks Penyata Disediakan PDO untuk MySQL LIKE Query
Tidak seperti penggantian rentetan, pernyataan yang disediakan dalam PHP PDO mengangkut data secara berasingan daripada pertanyaan. Oleh itu, anda harus mengelak daripada menggunakan petikan berganda atau petikan tunggal apabila mengikat nilai pada pernyataan SUKA. Sintaks yang betul untuk mengikat nilai kepada pernyataan LIKE dalam PHP PDO adalah seperti berikut:
$searchTerm = '%value%'; $prep = $dbh->prepare($sql); $ret = $prep->execute(array(':searchTerm' => $searchTerm));
Percubaan Salah
Sintaks berikut yang dicuba oleh pembangun adalah tidak betul dan tidak akan menghasilkan yang diingini keputusan:
$searchTerm = '%value%'; $prep = $dbh->prepare($sql); $ret = $prep->execute(array(':searchTerm' => '"%' . $searchTerm . '%"', '1');
$searchTerm = '%value%'; $prep = $dbh->prepare($sql); $ret = $prep->execute(array(':searchTerm' => $searchTerm));
Penyelesaian
Untuk menyelesaikan isu ini, gunakan kod berikut:
$searchTerm = '%value%'; $prep = $dbh->prepare($sql); $ret = $prep->execute(array(':searchTerm' => $searchTerm));
Penjelasan
Pernyataan yang disediakan dalam PDO tidak hanya melakukan penggantian rentetan. Sebaliknya, mereka mengendalikan data secara berasingan daripada pertanyaan. Petikan diperlukan hanya apabila membenamkan nilai ke dalam pertanyaan itu sendiri. Dengan mengecualikan petikan dalam pengikatan pernyataan yang disediakan, PDO dapat mengangkut rentetan '%value%' dengan betul ke pangkalan data untuk digunakan dalam perbandingan LIKE.
Atas ialah kandungan terperinci Bagaimana Menggunakan Pernyataan PDO yang Disediakan dengan betul dengan MySQL LIKE Queries dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!