Rumah >pangkalan data >tutorial mysql >Bagaimanakah Pertanyaan Berparameter Mencegah Suntikan SQL?

Bagaimanakah Pertanyaan Berparameter Mencegah Suntikan SQL?

DDD
DDDasal
2025-01-23 04:36:10785semak imbas

How Do Parameterized Queries Prevent SQL Injection?

Pertanyaan Berparameter: Perisai Terhadap Suntikan SQL

Memahami Pertanyaan Berparameter

Pertanyaan berparameter, juga dikenali sebagai pernyataan yang disediakan, ialah teknik untuk membuat pernyataan SQL. Ia memisahkan data dinamik (parameter) daripada bahagian tetap pertanyaan. Ini membolehkan tetapan parameter yang cekap semasa pelaksanaan.

PHP dan MySQL: Demonstrasi Praktikal

Mari kita ilustrasikan dengan pertanyaan SQL yang merangkumi parameter untuk alamat e-mel pengguna:

<code class="language-sql">SELECT * FROM users WHERE email = 'foo@example.com'</code>

Pelaksanaan dengan mysqli

<code class="language-php"><?php
$mysqli = new mysqli('localhost', 'username', 'password', 'database');

$stmt = $mysqli->prepare("SELECT * FROM users WHERE email = ?");
$stmt->bind_param('s', 'foo@example.com');
$stmt->execute();
$result = $stmt->get_result();

while ($row = $result->fetch_assoc()) {
    // Process the retrieved data...
}

$stmt->close();
?></code>

Pelaksanaan dengan PDO

<code class="language-php"><?php
$pdo = new PDO('mysql:host=localhost;dbname=database', 'username', 'password');

$stmt = $pdo->prepare("SELECT * FROM users WHERE email = ?");
$stmt->bindParam(1, 'foo@example.com', PDO::PARAM_STR);
$stmt->execute();
$result = $stmt->fetchAll();

foreach ($result as $row) {
    // Process the retrieved data...
}
?></code>

Kelebihan Utama Pertanyaan Berparameter:

  • Peningkatan Prestasi: Pra-penyusun pertanyaan dan penggunaan semula dengan parameter yang berbeza dengan ketara meningkatkan kecekapan berbanding dengan menyusun pertanyaan baharu untuk setiap set parameter.
  • Keselamatan Teguh: Manfaat teras ialah perlindungannya terhadap kelemahan suntikan SQL. Dengan mengasingkan pembolehubah daripada pertanyaan, ia menghalang pengguna berniat jahat daripada menyuntik kod berbahaya.

Atas ialah kandungan terperinci Bagaimanakah Pertanyaan Berparameter Mencegah Suntikan SQL?. 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