Fungsi prapemprosesan data ialah kaedah untuk interaksi antara PHP dan pangkalan data. Memandangkan SQL sangat terdedah kepada serangan suntikan, penggunaan fungsi prapemprosesan data membolehkan kami memproses data dengan lebih selamat. Dalam artikel ini, kita akan belajar cara menggunakan fungsi prapemprosesan data dalam PHP.
Apakah fungsi prapemprosesan data?
Prapemprosesan data ialah teknologi pelaksanaan pernyataan SQL yang menggunakan ruang letak parameter untuk menggantikan pembolehubah dalam pernyataan SQL yang dijana secara dinamik untuk mengelakkan serangan suntikan SQL. Prapemprosesan data meningkatkan prestasi pernyataan SQL dengan ketara kerana ia mengurangkan masa penyusunan pernyataan SQL dan melaksanakannya dengan lebih cepat. Sambungan pangkalan data PHP menyediakan fungsi prapemprosesan data untuk membantu kami menyusun semula pernyataan SQL dengan lebih mudah.
Bagaimana untuk menggunakan fungsi prapemprosesan data?
Langkah pertama untuk menggunakan fungsi prapemprosesan data ialah menyambung ke pangkalan data. Dalam PHP kita boleh berinteraksi dengan pangkalan data MySQL menggunakan sambungan PDO (Objek Data PHP) atau sambungan mysqli. Seterusnya, kami akan menggunakan sambungan PDO sebagai contoh.
Sambung ke pangkalan data
Kami menggunakan sambungan PDO untuk berinteraksi dengan pangkalan data, mula-mula kami perlu mencipta objek PDO. Semasa mencipta objek PDO, kita perlu lulus parameter yang diperlukan seperti jenis pangkalan data, nama hos, nama pangkalan data, nama pengguna dan kata laluan.
Contohnya:
$dsn = 'mysql:host=hostname;dbname=database'; $username = 'username'; $password = 'password'; try { $pdo = new PDO($dsn, $username, $password); } catch (PDOException $e) { echo 'Connection failed: ' . $e->getMessage(); }
Menyediakan pernyataan SQL
Seterusnya, kita perlu menyediakan pernyataan SQL untuk dilaksanakan. Kita boleh menggunakan pemegang tempat "?" untuk menunjukkan bahawa kita perlu menggunakan parameter. Contohnya:
$sql = 'SELECT * FROM users WHERE username = ? AND password = ?';
Perhatikan bahawa ruang letak parameter tidak boleh digunakan untuk nama jadual atau nama lajur. Hanya menukar data boleh menggunakan ruang letak parameter.
Ikat Parameter
Setelah kami mempunyai pernyataan SQL, kami perlu mengikat parameter pada ruang letak. PDO menyediakan dua kaedah untuk mengikat parameter: parameter bernama dan parameter pemegang tempat.
Format parameter yang dinamakan ialah ":name", contohnya:
rreeeFormat parameter pemegang tempat ialah "?", contohnya:
$sql = 'SELECT * FROM users WHERE username = :username AND password = :password'; $stmt = $pdo->prepare($sql); $stmt->bindParam(':username', $username); $stmt->bindParam(':password', $password);
Dalam perkara di atas code , kami menggunakan kaedah prepare() PDO untuk menyediakan pernyataan SQL untuk dilaksanakan. Kami kemudian mengikat parameter kepada pemegang tempat menggunakan kaedah bindParam(). Ambil perhatian bahawa kaedah bindParam() memerlukan nama atau kedudukan parameter dan nama pembolehubah untuk diikat sebagai parameter.
Laksanakan pernyataan SQL
Sekarang kita telah menyediakan pernyataan SQL untuk dilaksanakan dan mengikat parameter kepada ruang letak, kita boleh menggunakan kaedah execute() PDO untuk melaksanakan pernyataan SQL . Contohnya:
$sql = 'SELECT * FROM users WHERE username = ? AND password = ?'; $stmt = $pdo->prepare($sql); $stmt->bindParam(1, $username); $stmt->bindParam(2, $password);
Dapatkan keputusan
Selepas melaksanakan pernyataan SQL, langkah seterusnya ialah mendapatkan keputusan. Kita boleh mendapatkan keputusan menggunakan kaedah fetch() atau fetchAll() PDO. Kaedah
fetch() mengambil keputusan mengikut baris:
$stmt->execute();
fetchAll() kaedah mengambil semua hasil sekaligus:
while($row = $stmt->fetch()) { // 处理每行的结果 }
Perhatikan bahawa pemegang tempat kini digunakan dalam pernyataan SQL , kaedah "sediakan" mesti digunakan, dan kaedah "pertanyaan" tidak boleh digunakan, jika tidak, akan ada risiko suntikan SQL.
Ringkasan
Menggunakan fungsi prapemprosesan data dalam PHP boleh meningkatkan keselamatan pangkalan data dan mengelakkan serangan suntikan SQL. Dengan menggunakan sambungan PDO, kami boleh dengan mudah menyusun penyata SQL dan mengikat parameter pada ruang letak, dengan itu mengelakkan risiko penyambungan penyataan SQL secara manual. Perlu diingatkan bahawa dalam pernyataan SQL yang pada masa ini menggunakan ruang letak, kaedah "sediakan" mesti digunakan untuk melaksanakan pernyataan SQL pertanyaan, dan kaedah "pertanyaan" tidak boleh digunakan.
Atas ialah kandungan terperinci Cara menggunakan fungsi prapemprosesan data dalam PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!