在PHP中,使用PDO(PHP Data Objects)扩展时,可以使用预处理语句和参数绑定来防止SQL注入攻击。以下是使用参数绑定的方法:
$servername = "localhost";
$username = "your_username";
$password = "your_password";
$dbname = "your_db";
try {
$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
// 设置 PDO 错误模式为异常
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
echo "连接失败: " . $e->getMessage();
}
$stmt = $conn->prepare("INSERT INTO your_table (column1, column2) VALUES (:value1, :value2)");
在这个例子中,:value1
和 :value2
是参数占位符。
$value1 = "value1_data";
$value2 = "value2_data";
// 绑定参数到占位符
$stmt->bindParam(':value1', $value1, PDO::PARAM_STR);
$stmt->bindParam(':value2', $value2, PDO::PARAM_STR);
在这个例子中,我们将参数$value1
和$value2
绑定到对应的占位符。PDO::PARAM_STR
指定了参数的数据类型为字符串。
try {
$stmt->execute();
echo "新记录插入成功";
} catch (PDOException $e) {
echo "Error: " . $e->getMessage();
}
$conn = null;
将以上代码整合在一起,完整的示例如下:
<?php
$servername = "localhost";
$username = "your_username";
$password = "your_password";
$dbname = "your_db";
try {
$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
// 设置 PDO 错误模式为异常
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $conn->prepare("INSERT INTO your_table (column1, column2) VALUES (:value1, :value2)");
$value1 = "value1_data";
$value2 = "value2_data";
// 绑定参数到占位符
$stmt->bindParam(':value1', $value1, PDO::PARAM_STR);
$stmt->bindParam(':value2', $value2, PDO::PARAM_STR);
$stmt->execute();
echo "新记录插入成功";
} catch (PDOException $e) {
echo "Error: " . $e->getMessage();
}
// 关闭连接
$conn = null;
?>