Rumah >pangkalan data >tutorial mysql >Bolehkah Kad Liar Digunakan dengan Selamat dengan Penyata Disediakan PDO?
Menggunakan Kad Liar dalam Penyata Disediakan PDO
Dalam bidang pengaturcaraan pangkalan data, selalunya perlu melakukan pertanyaan yang melibatkan aksara kad bebas. Kad bebas, seperti simbol %, membolehkan kami memadankan julat nilai dalam kriteria carian kami. Dalam konteks ini, persoalan timbul sama ada mungkin untuk menggunakan kad bebas bersama-sama dengan pernyataan yang disediakan oleh PDO.
Untuk bermula, mari kita semak semula pertanyaan yang disebut dalam pertanyaan asal:
SELECT * FROM `gc_users` WHERE `name` LIKE '%anyname%'
Pertanyaan ini bertujuan untuk mendapatkan semula semua rekod daripada jadual gc_users di mana medan nama mengandungi subrentetan "anyname". Satu pendekatan untuk melaksanakan pertanyaan sedemikian menggunakan pernyataan yang disediakan oleh PDO adalah untuk mengikat aksara kad bebas terus ke parameter. Walau bagaimanapun, kaedah ini boleh membawa kepada kelemahan suntikan SQL.
Pendekatan yang lebih selamat ialah mengikat aksara kad bebas kepada parameter sebagai nilai rentetan. Ini boleh dicapai dengan menambah dan menambahkan aksara kad bebas pada pembolehubah parameter sebelum mengikatnya pada pernyataan yang disediakan. Contohnya:
$name = "%anyname%"; $query = $dbh->prepare("SELECT * FROM `gc_users` WHERE `name` LIKE :name"); $query->bindParam(':name', $name); $query->execute();
Sebagai alternatif, anda juga boleh mengikat parameter sebagai nilai menggunakanbindValue():
$stmt = $dbh->prepare("SELECT * FROM `gc_users` WHERE `name` LIKE :name"); $stmt->bindValue(':name', '%' . $name . '%'); $stmt->execute();
Dengan mematuhi garis panduan ini, anda boleh memanfaatkan kad bebas dalam PDO yang disediakan dengan berkesan kenyataan sambil mengekalkan integriti dan keselamatan aplikasi pangkalan data anda.
Atas ialah kandungan terperinci Bolehkah Kad Liar Digunakan dengan Selamat dengan Penyata Disediakan PDO?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!