Rumah >pangkalan data >tutorial mysql >Mengapa Pertanyaan PDO LIKE Saya Gagal, dan Bagaimana Saya Boleh Membetulkannya?

Mengapa Pertanyaan PDO LIKE Saya Gagal, dan Bagaimana Saya Boleh Membetulkannya?

Susan Sarandon
Susan Sarandonasal
2024-12-28 12:39:23478semak imbas

Why Do My PDO LIKE Queries Fail, and How Can I Fix Them?

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn