函数名称:PDO::prepare()
适用版本:PHP 5 >= 5.1.0, PHP 7, PHP 8
函数描述:该函数用于准备 SQL 语句并返回一个 PDOStatement 对象,以供后续执行。它可以防止 SQL 注入攻击,提高安全性。
语法:PDOStatement PDO::prepare(string $statement [, array $driver_options = array() ])
参数:
- $statement:需要准备的 SQL 语句,可以包含命名或占位符。
- $driver_options(可选):关于预处理语句的选项。可以是一个关联数组,包含以下选项:
- PDO::ATTR_CURSOR:设置游标类型。
- PDO::ATTR_EMULATE_PREPARES:是否启用模拟预处理。
- PDO::ATTR_FETCH_TABLE_NAMES:在返回结果集中包含表名。
- PDO::ATTR_STATEMENT_CLASS:设置结果集对象的类名和构造函数参数。
返回值:返回一个 PDOStatement 对象,如果失败则返回 false。
示例:
// 创建一个 PDO 对象
$dsn = 'mysql:host=localhost;dbname=test';
$username = 'root';
$password = 'password';
$pdo = new PDO($dsn, $username, $password);
// 准备 SQL 语句
$sql = "SELECT * FROM users WHERE id = :id";
$stmt = $pdo->prepare($sql);
// 绑定参数
$id = 1;
$stmt->bindParam(':id', $id, PDO::PARAM_INT);
// 执行查询
$stmt->execute();
// 获取结果
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);
// 输出结果
foreach ($result as $row) {
echo $row['name'] . "<br>";
}
在上面的示例中,我们首先创建了一个 PDO 对象,然后使用 prepare()
函数准备了一条带有占位符的 SQL 查询语句。接下来,我们使用 bindParam()
方法绑定了一个参数,并将其值设置为 1。然后,我们使用 execute()
方法执行查询,并使用 fetchAll()
方法获取结果集。最后,我们通过一个循环输出了结果集中的每一行的名字。这是一个简单的示例,展示了 PDO::prepare()
函数的基本用法。