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
DDDasal
2024-11-28 21:32:15329semak imbas

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%'

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!

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