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
Lepaskan: 2024-12-28 12:39:23
asal
488 orang telah melayarinya

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);
Salin selepas log masuk

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);
Salin selepas log masuk

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"%'
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan