Rumah >pangkalan data >tutorial mysql >Bagaimana Menggunakan Kad Liar dengan Penyata Disediakan PDO dengan Betul?

Bagaimana Menggunakan Kad Liar dengan Penyata Disediakan PDO dengan Betul?

DDD
DDDasal
2024-12-18 13:50:16923semak imbas

How to Properly Use Wildcards with PDO Prepared Statements?

Penggunaan Wildcard dalam Penyata Disediakan PDO

Melaksanakan pertanyaan SQL selalunya melibatkan penapisan data berdasarkan kriteria tertentu. Kenyataan yang disediakan ialah cara selamat untuk mencapainya dengan menghalang kelemahan suntikan SQL. Walau bagaimanapun, menggunakan kad bebas dalam pernyataan yang disediakan boleh menimbulkan cabaran.

Cabaran

Pertimbangkan pertanyaan berikut yang bertujuan untuk mencari pengguna yang namanya mengandungi "sebarang nama":

SELECT * FROM `gc_users` WHERE `name` LIKE '%anyname%'

Apabila cuba melaksanakan pertanyaan ini dengan pernyataan yang disediakan, pendekatan biasa seperti:

$stmt = $dbh->prepare("SELECT * FROM `gc_users` WHERE `name` LIKE :name");
$stmt->bindParam(':name', "%" . $name . "%");

dan

$stmt = $dbh->prepare("SELECT * FROM `gc_users` WHERE `name` LIKE '%:name%'");
$stmt->bindParam(':name', $name);

mungkin gagal berfungsi. Ini kerana penggunaan kad bebas dalam pernyataan SQL LIKE memerlukan pengendalian khas dalam pernyataan yang disediakan.

Penyelesaian

Untuk menggunakan kad bebas dengan pernyataan yang disediakan dengan betul, seseorang boleh menggunakan bindValue () kaedah bukannya bindParam(). Berikut ialah contoh:

$stmt = $dbh->prepare("SELECT * FROM `gc_users` WHERE `name` LIKE :name");
$stmt->bindValue(':name', '%' . $name . '%');

Sebagai alternatif, bindParam() boleh digunakan, tetapi dengan sintaks yang diubah suai sedikit:

$name = "%$name%";
$stmt = $dbh->prepare("SELECT * FROM `gc_users` WHERE `name` like :name");
$stmt->bindParam(':name', $name);

Kedua-dua pendekatan memastikan bahawa aksara kad bebas dilepaskan dan dikendalikan dengan betul oleh pangkalan data. Dengan menggunakan bindValue() atau bindParam() dengan cara ini, seseorang boleh mencari data dengan berkesan menggunakan kad bebas dalam pernyataan yang disediakan, memastikan keselamatan dan kefungsian.

Atas ialah kandungan terperinci Bagaimana Menggunakan Kad Liar dengan Penyata Disediakan PDO dengan Betul?. 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