Rumah > pangkalan data > tutorial mysql > Bagaimana Menggunakan Kad Liar dengan Penyata Disediakan PDO dengan betul dalam MySQL?

Bagaimana Menggunakan Kad Liar dengan Penyata Disediakan PDO dengan betul dalam MySQL?

DDD
Lepaskan: 2024-11-28 21:32:15
asal
389 orang telah melayarinya

How to Properly Use Wildcards with PDO Prepared Statements in 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%'
Salin selepas log masuk

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

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

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

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!

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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan