首頁 >資料庫 >mysql教程 >參數化查詢如何防止 SQL 注入?

參數化查詢如何防止 SQL 注入?

DDD
DDD原創
2025-01-23 04:36:10822瀏覽

How Do Parameterized Queries Prevent SQL Injection?

參數化查詢:防止 SQL 注入的盾牌

了解參數化查詢

參數化查詢,也稱為預先準備語句,是一種編寫 SQL 語句的技術。 它將動態資料(參數)與查詢的固定部分分開。這允許在執行過程中進行有效的參數設定。

PHP 和 MySQL:實際示範

讓我們用一個包含使用者電子郵件地址參數的 SQL 查詢來說明:

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

使用 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>

使用 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>

參數化查詢的主要優點:

  • 效能增強: 與為每個參數集編譯新查詢相比,預先編譯查詢並使用不同的參數重用它可顯著提高效率。
  • 強大的安全性:核心優勢是防止 SQL 注入漏洞。 透過將變數與查詢分開,可以防止惡意使用者註入有害程式碼。

以上是參數化查詢如何防止 SQL 注入?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn