php用pdo增删

王林

王林

2023-05-28

653人浏览

原创

改查操作详解

PHP是一门在网络领域中极其流行的脚本语言,而在PHP中,我们经常需要与数据库进行交互,以完成数据存储、查询和更新等操作。对于数据操作,目前较常用的方式包括mysqli和PDO两种,在本文中,我们将会重点讲解PDO(PHP Data Objects)的用法,以及如何使用PDO进行数据的增删改查操作。

  1. PDO的基础概念

PDO是PHP 5.1中引入的一种轻量级的,一致性的面向对象的数据访问层处理方式,提供了一个统一的API,用于访问各种关系数据库。使用PDO连接数据库,可提供一定的数据库驱动对象,最大程度上兼容多种不同类型的数据库。当需要更改数据库时,只需要更改数据库驱动即可,无需修改其他数据库操作接口。

在使用PDO进行数据库操作之前,我们需要先进行数据库连接的操作,PDO提供了一种较为简洁的方式进行数据库连接:

$dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass);

通过上述代码,我们就可以创建一个名为$dbh的PDO对象,其已连接到一个名为test的MySQL数据库。$user和$pass是数据库的用户名和密码,而mysql:host=localhost;则表示连接数据库的主机地址。

  1. 使用PDO进行数据查询操作

在使用PDO进行数据查询操作时,我们首先需要通过PDO对象创建一个查询语句,并将结果保存在一个变量中。PDO支持预编译查询语句,可以显著提高查询效率,避免SQL注入攻击。

2.1 查询操作

在PDO中,我们首先需要准备SQL查询语句并执行:

$sql = "SELECT * FROM users WHERE username=:username";
$stmt = $dbh->prepare($sql);
$stmt->bindParam(':username', $username);
$stmt->execute();

上述代码中,我们通过绑定参数:username,将变量$username的值绑定到了查询语句中,从而避免了SQL注入漏洞。

2.2 获取查询结果

当我们成功执行一个查询语句后,我们需要获取执行结果,PDO提供了以下几种方式进行查询结果的获取:

  • fetch():逐行获取查询结果,每次返回一行数据;
  • fetchAll():获取整个结果集,返回一个包含所有结果行的二维数组;
  • fetchColumn():获取结果集中指定列的值;
  • rowCount():返回查询结果的总行数。

下面是获取查询结果的示例代码:

while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
    echo "username: " . $row['username'] . "
";
    echo "email: " . $row['email'] . "
";
}

在上述示例代码中,我们通过while循环遍历了查询结果集,每次返回一行数据,并通过echo语句输出了每行数据中的username和email列对应的值。

2.3 绑定参数

在使用PDO进行预编译查询时,我们需要将查询语句中的动态参数绑定到变量中,从而避免了SQL注入漏洞。PDO支持以下几种方式进行参数绑定:

  • bindParam():将变量绑定到一个预处理语句的参数上;
  • bindValue():将值绑定到预处理语句的参数上;
  • execute():执行PDOStatement对象。

下面是使用bindParam()方法进行参数绑定的示例代码:

$stmt = $dbh->prepare("SELECT * FROM users WHERE username=:username AND email=:email");
$stmt->bindParam(':username', $username);
$stmt->bindParam(':email', $email);
$stmt->execute();

在上述示例代码中,我们使用bindParam()方法将$username和$email两个变量绑定到查询语句中的对应参数上,并通过execute()方法执行查询操作。这样,在查询时,我们就可以避免SQL注入漏洞的发生。

  1. 使用PDO进行数据的增、删、改操作

在使用PDO进行数据的增加、删除、修改功能时,我们需要通过PDO对象创建一个对应的操作语句,并将结果保存在一个变量中。在通过PDO对象执行语句时,PDO会自动对输入的数据进行转义并在执行前预编译,从而避免了SQL注入漏洞。

3.1 数据添加操作

在PDO中,我们通过prepare()方法创建一个预处理的SQL语句,并使用execute()方法将参数传递到该语句中。下面是一个使用PDO进行数据添加的示例代码:

// 准备SQL语句并绑定参数
$sql = "INSERT INTO `users` (`username`, `email`) VALUES (?, ?)";
$stmt = $dbh->prepare($sql);
$stmt->bindParam(1, $username);
$stmt->bindParam(2, $email);

// 执行SQL语句,插入新的用户记录
$username = 'test_user';
$email = 'test_user@example.com';
$stmt->execute();

在上述代码中,我们首先通过prepare()方法创建了一个预处理的SQL语句,并使用bindParam()方法将变量$username和$email绑定到该语句中的两个问号占位符上,分别对应VALUES (?, ?)中的两个?。最后通过execute()方法执行SQL语句,从而完成一条数据添加操作。

3.2 数据删除操作

在使用PDO进行数据删除时,我们需要通过prepare()方法创建一个预处理的SQL语句,并使用bindParam()方法将需要删除的数据绑定到该语句中。下面是使用PDO进行数据删除的示例代码:

// 准备SQL语句并绑定参数
$sql = "DELETE FROM `users` WHERE `username` = ?";
$stmt = $dbh->prepare($sql);
$stmt->bindParam(1, $username);

// 执行SQL语句,删除指定用户名的用户记录
$username = 'test_user';
$stmt->execute();

在上述示例代码中,我们首先通过prepare()方法创建了一个预处理的SQL语句,使其能够进行数据删除操作,并通过bindParam()方法将变量$username绑定到语句中的问号占位符上,对应于WHERE username = ?中的一个?。最终通过execute()方法执行SQL语句,完成了一次数据删除操作。

3.3 数据修改操作

使用PDO进行数据修改时,我们需要通过prepare()方法创建一个预处理的SQL语句,并使用bindParam()方法将需要修改的数据绑定到该语句中。下面是使用PDO进行数据修改的示例代码:

// 准备SQL语句并绑定参数
$sql = "UPDATE `users` SET `email` = ? WHERE `username` = ?";
$stmt = $dbh->prepare($sql);
$stmt->bindParam(1, $email);
$stmt->bindParam(2, $username);

// 执行SQL语句,更新指定用户名的用户记录
$username = 'test_user';
$email = 'new_test_user@example.com';
$stmt->execute();

在上述示例代码中,我们使用prepare()方法创建了一个预处理的SQL语句,并使用bindParam()方法将需要修改的参数绑定到该语句中。其中,使用了SET语句将用户记录中的email字段进行修改,并使用了WHERE语句将修改操作限制在了指定的用户上。在bindParam()方法中,我们通过1和2两个参数分别对应了email和username,从而完成了参数绑定的操作。

  1. 总结

通过本文的学习,我们了解了如何使用PDO进行MySQL数据库的连接、查询、数据添加、删除和修改等操作。在使用PDO进行操作时,我们需要使用prepare()方法创建一个预处理的SQL语句,并使用bindParam()方法对该语句中的动态参数进行绑定。这样,在使用execute()方法执行语句时,我们就可以避免SQL注入漏洞的发生,使数据操作更加安全可靠。

php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
墨刀AI提示词教学
墨刀AI提示词教学

本合集由PHP中文网精心整理,为您提供全面的墨刀AI提示词教学。内容涵盖高质量原型撰写公式与实操窍门,助您轻松掌握AI设计工具。无论是零基础入门还是进阶技巧,都能让您快速上手,大幅提升产品设计与协作效率。

2026.08.04

10

21

墨刀AI完整入门
墨刀AI完整入门

PHP中文网为您倾力打造墨刀AI保姆级入门指南完整版!本合集从零基础讲起,涵盖AI生成原型、提示词优化、图片转原型及多轮对话等核心功能。无论您是新手还是进阶用户,都能轻松掌握产品设计全流程。快来PHP中文网,一键解锁高效设计技巧,让想法即刻成型!

2026.08.04

8

20

墨刀AI进阶技巧
墨刀AI进阶技巧

本合集由PHP中文网精心整理,为您提供墨刀AI核心进阶策略指南。内容涵盖高效提示词写作、原型智能生成与微调、结构化导图制作及行业分析报告输出等实战技巧。助您轻松掌握AI设计工具,大幅提升产品设计与团队协作效率。

2026.08.04

10

14

火山引擎实名认证失败怎么办
火山引擎实名认证失败怎么办

火山引擎实名认证失败可能与证件信息填写错误、姓名或企业信息不一致、证件照片不清晰、营业执照状态异常、手机号验证失败或审核资料不完整有关。本专题整理个人认证、企业认证、资料上传、审核退回、重新提交和认证不通过的常见处理方法。

2026.08.04

5

10

火山引擎域名备案流程详解
火山引擎域名备案流程详解

火山引擎域名备案适合需要在火山引擎云服务器、对象存储、CDN或网站服务上绑定域名的用户参考。本专题整理备案入口、账号实名认证、备案类型选择、主体信息填写、网站信息提交、资料上传、初审核验、管局审核和备案失败排查,帮助用户完成网站上线前的备案流程。

2026.08.04

1

10

火山引擎DNS解析配置步骤
火山引擎DNS解析配置步骤

使用火山引擎DNS解析网站域名时,需要确认域名已完成管理接入,并正确配置服务器IP、CNAME地址或验证记录。本专题整理域名添加、记录类型选择、TTL设置、解析状态检查、备案和访问测试等流程,适合新手搭建网站时参考。

2026.08.04

3

10

火山引擎对象存储使用教程
火山引擎对象存储使用教程

火山引擎对象存储适合用于网站图片、视频文件、备份数据、静态资源和应用附件管理。本专题整理TOS控制台入口、存储桶创建、地域选择、权限设置、文件上传、访问链接生成、CDN加速、费用查看和常见上传或访问失败问题,帮助用户快速掌握对象存储基础操作。

2026.08.04

1

10

火山引擎云服务器使用教程
火山引擎云服务器使用教程

火山引擎云服务器使用教程适合第一次购买、部署和管理云服务器的用户参考。本专题整理控制台入口、实例创建、地域和配置选择、系统镜像设置、安全组放行、远程连接、网站部署、续费计费和常见连接失败问题,帮助用户快速完成云服务器基础使用流程。

2026.08.04

5

10

火山引擎API Key绑定大模型教程
火山引擎API Key绑定大模型教程

火山引擎API Key怎么绑定大模型适合需要在火山方舟、应用后台、脚本工具或AI编程软件中调用模型的开发者参考。本专题整理控制台服务开通、API Key创建、模型权限检查、模型ID选择、Base URL填写、调用测试和鉴权失败排查,帮助用户完成从密钥到模型调用的配置流程。

2026.08.04

2

10

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.4万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 131.8万人学习