在PHP中,可以使用mysqli或PDO扩展来与数据库交互,其中都有预处理语句的功能,可以对字符串进行过滤,防止SQL注入攻击。
以下是一个使用mysqli扩展的示例代码:
// 创建数据库连接
$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);
// 绑定参数
$stmt->bind_param("s", $username);
// 设置参数值
$username = $_POST['username'];
// 执行查询
$stmt->execute();
// 获取结果集
$result = $stmt->get_result();
// 遍历结果集
while ($row = $result->fetch_assoc()) {
// 处理查询结果
echo $row['username'] . "<br>";
}
// 关闭连接
$conn->close();
在上面的示例中,我们使用了预处理语句,通过bind_param方法绑定参数,这样可以确保用户输入的数据不会被当作SQL语句的一部分执行,从而防止SQL注入攻击。