阅读量:0
在PHP中,使用PDO(PHP Data Objects)扩展时,可以使用预处理语句和参数绑定来防止SQL注入攻击。以下是使用参数绑定的方法:
- 创建PDO连接:
$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(); }
- 准备SQL语句:
$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; ?>