在PHP中,可以使用mysqli或PDO擴展來與數(shù)據(jù)庫交互,其中都有預處理語句的功能,可以對字符串進行過濾,防止SQL注入攻擊。
以下是一個使用mysqli擴展的示例代碼:
// 創(chuàng)建數(shù)據(jù)庫連接
$conn = new mysqli("localhost", "username", "password", "dbname");
// 檢查連接是否成功
if ($conn->connect_error) {
die("連接失敗: " . $conn->connect_error);
}
// 準備SQL語句
$sql = "SELECT * FROM users WHERE username = ?";
// 使用預處理語句
$stmt = $conn->prepare($sql);
// 綁定參數(shù)
$stmt->bind_param("s", $username);
// 設置參數(shù)值
$username = $_POST['username'];
// 執(zhí)行查詢
$stmt->execute();
// 獲取結果集
$result = $stmt->get_result();
// 遍歷結果集
while ($row = $result->fetch_assoc()) {
// 處理查詢結果
echo $row['username'] . "<br>";
}
// 關閉連接
$conn->close();
在上面的示例中,我們使用了預處理語句,通過bind_param方法綁定參數(shù),這樣可以確保用戶輸入的數(shù)據(jù)不會被當作SQL語句的一部分執(zhí)行,從而防止SQL注入攻擊。