PHP从零开始--字段修饰符&&数据操作&&SQL语言
在PHP中,使用PDO扩展来操作数据库,可以通过预处理语句(prepared statements)来防止SQL注入。下面是一个简单的例子,展示了如何使用PDO执行带有参数绑定的查询:
<?php
$host = '127.0.0.1';
$db = 'your_database';
$user = 'your_username';
$pass = 'your_password';
$charset = 'utf8mb4';
$dsn = "mysql:host=$host;dbname=$db;charset=$charset";
$options = [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
PDO::ATTR_EMULATE_PREPARES => false,
];
try {
$pdo = new PDO($dsn, $user, $pass, $options);
// 插入数据示例
$stmt = $pdo->prepare("INSERT INTO table_name (column1, column2) VALUES (:value1, :value2)");
$stmt->bindParam(':value1', $value1, PDO::PARAM_STR);
$stmt->bindParam(':value2', $value2, PDO::PARAM_STR);
$value1 = 'Data1';
$value2 = 'Data2';
$stmt->execute();
// 查询数据示例
$stmt = $pdo->prepare("SELECT * FROM table_name WHERE column1 = :value1");
$stmt->bindParam(':value1', $value1, PDO::PARAM_STR);
$value1 = 'Data1';
$stmt->execute();
$result = $stmt->fetchAll();
print_r($result);
} catch (\PDOException $e) {
throw new \PDOException($e->getMessage(), (int)$e->getCode());
}
在这个例子中,我们首先创建了一个PDO实例,并设置了错误模式为异常(PDO::ERRMODE\_EXCEPTION),默认的获取模式为关联数组(PDO::FETCH\_ASSOC),并禁用了预处理语句的模拟(PDO::ATTR\_EMULATE\_PREPARES => false)。然后,我们使用prepare
方法创建了一个预处理语句,使用bindParam
绑定参数,并在执行时通过execute
方法传递参数值。这样做可以有效预防SQL注入攻击。
评论已关闭