Rumah >pangkalan data >tutorial mysql >Bagaimana Menggunakan Kad Liar dengan Penyata Disediakan PDO dengan betul dalam MySQL?
Menggunakan Wildcard dalam PDO Prepared Statements
Melaksanakan pertanyaan MySQL yang menggunakan wildcard, seperti % untuk memadankan sebarang bilangan aksara, boleh menimbulkan cabaran apabila menggunakan pernyataan PDO yang disediakan. Artikel ini membincangkan cara menggunakan kad bebas secara berkesan dengan pernyataan yang disediakan.
Pertanyaan Asal
Matlamat awal adalah untuk melaksanakan pertanyaan berikut:
SELECT * FROM `gc_users` WHERE `name` LIKE '%anyname%'
Tidak berjaya Percubaan
Dua percubaan yang tidak berjaya telah dibuat untuk menggunakan pernyataan yang disediakan:
$stmt = $dbh->prepare("SELECT * FROM `gc_users` WHERE `name` LIKE :name"); $stmt->bindParam(':name', "%" . $name . "%"); $stmt->execute(); $stmt = $dbh->prepare("SELECT * FROM `gc_users` WHERE `name` LIKE '%:name%'"); $stmt->bindParam(':name', $name); $stmt->execute();
Penyelesaian
Isunya terletak pada penggunaan bindParam (). Untuk menggunakan kad bebas dengan betul dalam pernyataan yang disediakan, anda harus menggunakan bindValue(). Kod di bawah menunjukkan pendekatan yang betul:
$stmt = $dbh->prepare("SELECT * FROM `gc_users` WHERE `name` LIKE :name"); $stmt->bindValue(':name', '%' . $name . '%'); $stmt->execute();
Alternatif
Satu lagi pilihan yang berdaya maju ialah mengubah suai kod untuk menggunakan bindParam() dengan cara berikut:
$name = "%$name%"; $stmt = $dbh->prepare("SELECT * FROM `gc_users` WHERE `name` LIKE :name"); $stmt->bindParam(':name', $name); $stmt->execute();
Atas ialah kandungan terperinci Bagaimana Menggunakan Kad Liar dengan Penyata Disediakan PDO dengan betul dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!