php pdo操作数据库示例

下面是关于PHP PDO操作数据库的攻略:

前置知识

在先介绍示例之前,我们需要先了解一些PHP PDO操作数据库的前置知识:

  1. PDO是PHP的本地数据访问层(支持多种数据库);
  2. PDO具有防止SQL注入攻击的能力,并提供了更好的错误处理机制;
  3. PDO通过PDOStatement对象执行SQL语句。

示例一

下面我们以连接MySQL数据库为例,展示如何通过PHP PDO操作数据库。

首先,我们需要创建一个数据库连接:

<?php
// 连接数据库
$host = 'localhost';
$dbname = 'example';
$username = 'root';
$password = '';
$dsn = "mysql:host=$host;dbname=$dbname;charset=utf8mb4";
$options = [
    PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
    PDO::ATTR_EMULATE_PREPARES => False,
    PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
];
try {
    $pdo = new PDO($dsn, $username, $password, $options);
} catch (PDOException $e) {
    echo 'Connection failed: ' . $e->getMessage();
}
?>

上述代码中,我们首先定义了数据库的连接参数,然后使用PDO的构造函数创建了一个$pdo对象,如果连接失败,会显示连接错误信息。

接下来,我们来学习如何执行SQL语句。

查询操作

下面我们以查询操作为例,演示如何执行SQL语句。

<?php
// SQL查询操作
$stmt = $pdo->query('SELECT * FROM users');
while ($row = $stmt->fetch()) {
    echo $row['name'] . "\n";
}
?>

上述代码中,我们使用PDOStatement::fetch() 函数从结果集中获取一行。

要注意的是,在PDO中有三种获取数据的方式:PDOStatement::fetch(), PDOStatement::fetchAll() 和 PDOStatement::fetchColumn()。这三种方法分别获取单个行,全部行,或者列的单个值。根据需要来选择相应的方法。

插入操作

如果你想要插入一条记录,代码如下:

<?php
// SQL插入操作
$sql = "INSERT INTO users (name, email) VALUES ('John', 'john@example.com')";
$pdo->exec($sql);
?>

需要注意的是,PDO的PDO::exec() 函数返回的是影响行数,并且不支持绑定参数,使用该函数时需谨慎,防止SQL注入攻击。

示例二

接下来,我们通过SQLite数据库来演示更多操作。

首先,我们还是需要创建一个数据库连接:

<?php
// 连接数据库
$dbname = 'example.db';
$dsn = "sqlite:$dbname";
$options = [
    PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
    PDO::ATTR_EMULATE_PREPARES => False,
    PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
];
try {
    $pdo = new PDO($dsn, '', '', $options);
} catch (PDOException $e) {
    echo 'Connection failed: ' . $e->getMessage();
}
?>

接着,我们来演示更多操作:

绑定查询参数

可以使用PDOStatement::bindParam() 或者PDOStatement::bindValue()绑定查询参数。

下面是bindParam()的示例代码:

<?php
// SQL绑定查询参数操作
$stmt = $pdo->prepare('SELECT * FROM users WHERE name = :name');
$stmt->bindParam(':name', $name);
$name = 'John';
$stmt->execute();
$result = $stmt->fetchAll();
?>

上述代码中,我们首先使用PDO::prepare()函数实例化了一个PDOStatement对象,接着使用PDOStatement::bindParam() 函数绑定了$name变量,并把变量$name的值设置为'John',最后通过PDOStatement::fetchAll() 函数获取所有查找的结果。

事务处理

在使用PHP PDO操作数据库时,我们经常需要使用事务来确保原子性操作,错误处理和数据完整性。

下面的代码展示如何使用PDO的beginTransaction()、commit()、和rollBack() 来实现事务处理:

<?php
// PDO事务处理的操作
try {
    $pdo->beginTransaction();

    $sql = "INSERT INTO users (name, email) VALUES ('John', 'john@example.com')";
    $pdo->exec($sql);

    $sql = "UPDATE users SET email='john_doe@example.com' WHERE name='John'";
    $pdo->exec($sql);

    $pdo->commit();
} catch (PDOException $e) {
    $pdo->rollBack();
    echo "Error: " . $e->getMessage();
}
?>

在上述代码中,我们使用PDO::beginTransaction()开启了一个事务,然后插入一条记录并更新一条记录,最后使用PDO::commit()提交事务,如果提交事务失败则会回滚操作。

结语

以上就是关于PHP PDO操作数据库示例的完整攻略,至此您应该已经掌握如何操作PDO来连接数据库以及执行增删改查等操作。提供给初学者参考和学习。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:php pdo操作数据库示例 - Python技术站

(1)
上一篇 2023年5月21日
下一篇 2023年5月21日

相关文章

  • DOS批处理脚本语言简介与详细说明

    DOS批处理脚本语言简介与详细说明 简介 DOS批处理脚本是一种基于DOS操作系统的脚本语言,其可以通过批处理脚本的形式执行一些简单的操作,如创建、删除、复制文件或文件夹等等,可以自动完成许多繁琐的操作,提高工作效率。 命令 DOS批处理脚本语言包含了许多常用的命令,这里会介绍几个常用的命令: echo 命令:输出一段文本,可以用于显示提示信息。 dir 命…

    database 2023年5月21日
    00
  • Oracle数据库空间满了进行空间扩展的方法

    为了进行空间扩展,我们需要使用Oracle数据库管理工具(如SQL Plus)。以下是Oracle数据库空间扩展的步骤: 1. 查看当前空间使用情况 首先,我们需要查看当前数据库的空间使用情况。可以使用以下SQL语句: SELECT tablespace_name, sum(bytes)/1024/1024 AS mb_total, sum(maxbytes…

    database 2023年5月21日
    00
  • MySQL的DATE_FORMAT函数的使用

    MySQL的DATE_FORMAT函数是用于将日期转换为指定格式字符串的函数,它的语法如下: DATE_FORMAT(date,format) 其中,date表示要格式化的日期,format表示要格式化的格式,返回一个字符串类型值。 下面是几个常用的format格式: %Y: 表示年份,例如: 2021 %m: 表示月份,例如:01、02、03等 %d: 表…

    database 2023年5月22日
    00
  • Linux inotify实时备份实现方法详解

    Linux inotify实时备份实现方法详解 什么是inotify inotify是Linux提供的一种监视文件系统的机制,能够实时监控文件的变化(如文件的创建、修改、删除等)。在文件系统发生变更时,inotify会产生一个回调事件,通过该事件机制,我们能够实时获取到文件的变化。 inotify实现实时备份 借助于inotify的事件机制,我们可以实现一个…

    database 2023年5月22日
    00
  • linux oracle数据库删除操作指南

    Linux Oracle数据库删除操作指南 在Linux操作系统中,删除Oracle数据库时需要非常小心谨慎,否则可能会导致数据的不可恢复性。本文将详细介绍如何在Linux系统中正确地删除Oracle数据库。 步骤一:停止Oracle数据库服务 在删除Oracle数据库之前,必须停止Oracle数据库服务。可以使用以下命令停止Oracle服务: $ sudo…

    database 2023年5月21日
    00
  • Oracle批量查询、删除、更新使用BULK COLLECT提高效率

    Oracle中BULK COLLECT可以用于批量查询、删除及更新数据,可以提高处理数据的效率。下面是操作步骤: 1. 编写游标 DECLARE CURSOR c1 IS SELECT column_name FROM table_name; TYPE column_name_type IS TABLE OF table_name.column_name%T…

    database 2023年5月21日
    00
  • SQL LOADER错误小结

    SQL LOADER是一个用于将数据从纯文本文件加载到ORACLE数据库中的工具,但是在实际使用中难免会遇到一些错误,本攻略旨在帮助大家更好地掌握SQL LOADER程序中的错误类型及解决方法。 SQL LOADER常见错误类型 1. 数据输入文件格式错误 这种错误通常是由于输入文件在编写时格式不规范,如某一行结束符缺失或者格式不统一等。在SQL LOADE…

    database 2023年5月18日
    00
  • 得物基于StarRocks的OLAP需求实践详解

    下面是“得物基于StarRocks的OLAP需求实践详解”的完整攻略。 1. 背景 得物是中国领先的社交电商平台之一,数据量非常庞大。在应对这么庞大的数据量时,OLAP技术实现数据查询和分析是一个非常重要的手段。 当然,得物不是一个小公司,他们需要的不仅仅是一个“普通的”OLAP系统,还需要具备可扩展性、高效性和易用性。为此,他们采用了由StarRocks公…

    database 2023年5月18日
    00
合作推广
合作推广
分享本页
返回顶部