Penyata PHP PDO Disediakan -- MySQL LIKE Query
Pernyataan yang disediakan PDO menawarkan cara yang selamat dan cekap untuk melaksanakan pertanyaan SQL dengan parameter dinamik. Apabila bekerja dengan pertanyaan MySQL LIKE, menggunakan sintaks yang betul adalah penting.
Soalan:
Seorang pembangun menghadapi cabaran dalam melaksanakan pertanyaan MySQL LIKE menggunakan PDO dalam PHP, walaupun pertanyaan berfungsi dengan betul dalam klien MySQL. Kod gagal mengembalikan hasil dan pelbagai variasi sintaks telah dicuba tidak berjaya.
Jawapan:
Sintaks yang salah dalam kod terletak dalam penyata sediakan dan laksana . Isunya ialah penggunaan petikan berganda yang tidak perlu dan pengikatan parameter yang salah. Berikut ialah kod yang diperbetulkan:
$sql = 'SELECT hs.hs_pk, hs.hs_text, hs.hs_did, hd.hd_did, hd.hd_text, hv.hv_text, hc.hc_text FROM hs LEFT JOIN hd ON hs.hs_did = hd.hd_did LEFT JOIN hd ON hd.hd_vid = hv.hv_id LEFT JOIN hc ON hd.hd_pclass = hc.hc_id WHERE hs.hs_text LIKE :searchTerm LIMIT 25'; $prep = $dbh->prepare($sql); $ret = $prep->execute(array(':searchTerm' => '%'.$searchTerm.'%'));
Penjelasan:
Pernyataan yang disediakan berfungsi dengan menghantar pertanyaan ke pangkalan data tanpa sebarang nilai parameter yang dibenamkan di dalamnya. Parameter dihantar secara berasingan untuk diikat oleh enjin pangkalan data. Menambah petikan berganda pada nilai parameter dalam pernyataan laksana adalah tidak betul kerana PDO akan menyertakan nilai parameter secara automatik dalam petikan jika diperlukan.
Selain itu, pengendali LIKE memerlukan peratusan di sekeliling istilah carian untuk membenarkan padanan separa. Dalam kod yang salah, istilah carian tidak dibatasi dengan betul dengan petikan berganda dan bukannya tanda peratusan yang diperlukan.
Dengan membetulkan ralat sintaks ini, pernyataan yang disediakan PDO boleh digunakan untuk berjaya melaksanakan pertanyaan MySQL LIKE.
Atas ialah kandungan terperinci Bagaimana Menggunakan Pernyataan PDO yang Disediakan dengan betul untuk MySQL LIKE Queries dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!