在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;?>