Dalam bidang manipulasi pangkalan data, menggunakan pertanyaan berparameter ialah langkah keselamatan yang penting untuk melindungi daripada serangan suntikan SQL. Apabila cuba memasukkan data ke dalam pangkalan data MySQL menggunakan modul MySQLdb, sesetengah pengguna mungkin menghadapi kesukaran.
Pertimbangkan contoh berikut, di mana percubaan dibuat untuk memasukkan enam pembolehubah ke dalam jadual "Lagu":
cursor.execute (""" INSERT INTO Songs (SongName, SongArtist, SongAlbum, SongGenre, SongLength, SongLocation) VALUES (var1, var2, var3, var4, var5, var6) """)
Memasukkan parameter ke dalam pertanyaan SQL melalui interpolasi rentetan boleh menjadi masalah kerana ia boleh menyebabkan sistem terdedah kepada suntikan SQL. Contoh di atas mempamerkan isu ini.
Untuk membetulkan isu dan memastikan sisipan selamat, gunakan sintaks yang betul untuk pertanyaan berparameter:
cursor.execute("INSERT INTO Songs (SongName, SongArtist, SongAlbum, SongGenre, SongLength, SongLocation) VALUES (%s, %s, %s, %s, %s, %s)", (var1, var2, var3, var4, var5, var6))
Penggunaan pengikatan parameter, diwakili oleh '%s' pemegang tempat, memastikan bahawa parameter input dikeluarkan dengan betul dan dibersihkan. Ini menghalang niat jahat daripada memanipulasi pernyataan SQL dan menjejaskan pangkalan data.
Perhatikan bahawa kaedah pengikatan parameter boleh berbeza-beza merentas pelaksanaan API pangkalan data yang berbeza. Pustaka klien MySQL menggunakan sintaks gaya printf dan bukannya '?' konvensional penanda yang digunakan oleh rangka kerja lain seperti python-sqlite. Memahami perbezaan ini adalah penting untuk manipulasi pangkalan data yang berkesan.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Memasukkan Data dengan Selamat ke dalam MySQL Menggunakan Pertanyaan Berparameter?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!