阅读量:0
要防止SQL注入,可以使用PHP的预处理语句(Prepared Statements)和参数绑定功能。这样,即使用户提供的数据包含恶意代码,也不会影响到查询的结构。以下是一个使用PHP和MySQLi扩展实现预处理语句和参数绑定的示例:
<?php // 数据库连接信息 $servername = "localhost"; $username = "your_username"; $password = "your_password"; $dbname = "your_db"; // 创建连接 $conn = new mysqli($servername, $username, $password, $dbname); // 检查连接 if ($conn->connect_error) { die("连接失败: " . $conn->connect_error); } // 需要插入的数据 $name = "John Doe"; $email = "john.doe@example.com"; // 使用预处理语句和参数绑定来防止SQL注入 $stmt = $conn->prepare("INSERT INTO users (name, email) VALUES (?, ?)"); $stmt->bind_param("ss", $name, $email); // 执行预处理语句 if ($stmt->execute()) { echo "新记录插入成功"; } else { echo "Error: " . $stmt->error; } // 关闭连接 $stmt->close(); $conn->close(); ?>
在这个示例中,我们使用了mysqli
扩展的预处理语句功能。prepare()
方法用于创建预处理语句,bind_param()
方法用于绑定参数。参数以字符串形式传递,其中第一个字符表示参数类型(如"s"表示字符串),后续字符表示参数值。
这种方法可以有效防止SQL注入,因为预处理语句在编译时已经确定了查询结构,而参数值不会影响到查询结构。即使用户提供的数据包含恶意代码,也不会影响到查询的执行。