Mengapa `bindParam` Gagal Apabila Menggunakan `LIKE` dalam Pertanyaan PDO MySQL?

Susan Sarandon
Lepaskan: 2024-11-13 10:36:02
asal
139 orang telah melayarinya

Why Does `bindParam` Fail When Using `LIKE` in MySQL PDO Queries?

Correcting LIKE Syntax When Using bindParam for MySQL PDO Queries

In MySQL PDO queries, using LIKE with bindParam can be tricky. This question demonstrates a common issue faced when attempting to match usernames beginning with a specific string.

The incorrect syntax provided in the question uses inner single quotes around the $term variable:

$term = "'$term%'";
Salin selepas log masuk

To fix this, simply remove the inner single quotes:

$term = "$term%";
Salin selepas log masuk

When using bindParam, PDO automatically handles string quoting. Adding unnecessary quotes within the $term variable can result in incorrect LIKE matching.

The corrected statement should look like this:

$sql = "SELECT username 
        FROM `user` 
        WHERE username LIKE :term 
        LIMIT 10";      

$core = Connect::getInstance();

$stmt = $core->dbh->prepare($sql);
$stmt->bindParam(':term', $term, PDO::PARAM_STR);
$stmt->execute();
$data = $stmt->fetchAll();
Salin selepas log masuk

This will correctly match usernames that begin with the $term variable, for example "a".

Atas ialah kandungan terperinci Mengapa `bindParam` Gagal Apabila Menggunakan `LIKE` dalam Pertanyaan PDO MySQL?. 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