PHP的PDO数据访问抽象层
1、 1.
2、 PDO 是 PHP 中用于访问数据库的轻量级、一致性的接口扩展。
3、 究竟是什么
4、 这是一个类似于我们自行编写的MySQL数据库工具类,由他人实现。
5、 其功能作用同样重要。
6、 连接数据库
7、 执行增加、删除、修改操作语句
8、 执行查询语句可分为三类:查询多行、查询单行、查询单个值。
9、 但PDO功能非常强大
10、 支持多种数据库连接。
11、 几乎可执行数据库所有操作,包括增删改查及事务处理等功能。
12、 在PHP语言配置中,PDO的结构大致如此。
13、 例如(示例代码):
14、 创建PDO对象,传入数据库连接参数以建立连接。
15、 执行插入、更新或删除操作后,返回受影响的行数,若操作失败则返回 false。该方法用于判断数据库操作是否成功并获取影响记录的数量。
16、 执行查询语句如 select、desc 或 show,返回 PDO 结果集对象或布尔值 false,用于判断查询是否成功并进行后续数据处理操作。
17、 需在php.ini中开启对应模块,才能启用各种数据库的引擎功能。
18、 连接账册数据库的配置参数
19、 包括:
20、 常见的数据库类型包括MySQL、MSSQL和Oracle等。
21、 位置示例:如本地主机
22、 端口示例:3306
23、 董政涉嫌犯罪
24、 密码:
25、 数据库名称:
26、 连接编码名称
27、 举例:
28、 结果如下:
29、 模式一:默认常规错误处理方式
30、 例如,PDO对象执行一条错误的SQL语句时
31、 根据此前对PDO的理解,此时返回false,表明执行出现了错误。
32、 此时应如何进行错误处理?
33、 对比之前纯MySQL函数的实现方式
34、 当结果为假时,执行相应的错误处理操作。
35、 输出错误信息:显示MySQL错误内容。
36、 }
37、 正确的时候,一切顺利。
38、 }
39、 PDO的错误处理方式默认与此形式基本相同。
40、 春风拂面花自开
41、 若条件不成立,则执行错误处理操作,确保程序正常运行并返回相应提示信息。
42、 错误代号:输出由 errorcode() 方法返回的数字编号,表示操作中出现的具体错误类型。
43、 输出错误信息:调用\$pdo的errorinfo()方法,该方法返回一个包含错误详情的数组。
44、 实际上应如此处理。
45、 输出错误信息:连接数据库失败,请检查配置参数。
46、 }
47、 正确的时候,一切都顺理成章。
48、 }
49、 模式二:异常状态处理
50、 异常即超出预期的非正常情况,对程序员而言,任何不符合预设逻辑的运行结果均被视为异常。
51、 异常其实是错误的另一种表述,这是在面向对象编程中常用的说法。
52、 当错误发生时,系统内部会基于异常类生成一个异常对象,用以标识和处理该问题。
53、 要让PDO在出错时抛出异常,需先将其错误处理模式设置为异常模式,具体操作如下:
54、 异常处理语法如下:
55、 执行SQL查询语句并获取结果集。
56、 }
57、 当程序出现错误时,系统会自动捕获并处理数据库操作中的异常情况,确保程序稳定运行,同时防止因数据库问题导致的崩溃或数据不一致现象。
58、 \$e 是此类的一个实例对象。
59、 出现错误,请检查输入内容。
60、 输出错误代码:\$e->getcode() 的值。
61、 输出错误信息:拼接字符串错误内容与异常消息内容。
62、 }
63、 结果如下:
64、 PDO对象:数据库操作工具
65、 创建PDO对象:\$pdo = new PDO(参数);
66、 执行该对象的若干方法。
67、 PDO查询结果对象
68、 创建此对象
69、 执行查询语句并返回结果,操作成功时继续后续处理流程。
70、 执行该对象的若干方法操作
71、 调用对象的方法并获取返回结果
72、 主要包括:
73、 获取结果集中包含的行数。
74、 获取结果集中列的数量,使用 columnCount 方法可返回列数。
75、 执行 fetch 方法可获取查询结果的单行数据,返回形式为一维数组。常用返回类型包括:PDO::FETCH_ASSOC,以关联数组形式返回字段名与对应值;PDO::FETCH_NUM,以数字索引数组形式返回;PDO::FETCH_BOTH,同时包含关联和数字索引两种格式,此为默认选项;PDO::FETCH_OBJ,则将每行数据作为匿名对象返回,属性名为字段名。不同模式适用于不同数据访问需求。
76、 \$stmt->fetchAll() 方法用于获取多行结果,返回一个包含所有数据的二维数组。
77、 fetchColumn()方法用于获取单个标量数据,参数\$i指定返回第几个字段的值,若省略则默认为0,即获取结果集中第一列的数据。该方法适用于只需提取单一数值的查询场景。
78、 获取语句执行错误的代码编号
79、 获取预处理语句的错误信息详情
80、 关闭游标并释放相关资源,避免内存泄漏。
81、 以一行示例说明
82、 选取多行数据
83、 执行SQL语句后,PDO返回的结果集对象可通过\$stmt变量获取,即\$stmt = \$pdo->query(SQL语句);
84、 预处理语法指的是SQL语句中部分数据暂未提供,留待后续补充执行的一种机制。
85、 比如:
86、 从用户列表中查询ID大于指定值且年龄小于指定值的所有记录,SQL语句中的两个问号代表待定参数,将在执行时动态传入具体数值。
87、 或:
88、 向表XXX中插入数据,字段包括id、age、name和edu,其中id为自增,其余三个字段的值待定,使用占位符进行参数绑定,共涉及三个需要传入的具体数值。
89、 这类语句被称为预处理语句,其执行流程如下:先进行预处理,再进入编译阶段,最终执行程序。
90、 第一步:开始行动
91、 通过PDO预处理SQL语句,生成一个待执行的结果集对象,此时尚未执行查询,数据还未获取。
92、 该语句尚未执行,仅完成了预编译处理。
93、 二、第二步操作
94、 对预处理结果中未确定的数据进行赋值操作。
95、 将 SQL 语句中的第一个占位符参数设置为数值 10。
96、 将SQL语句中的第二个占位符参数设置为数值18。
97、 三、第三步:
98、 执行后,语句才正式生效。
99、 执行预处理语句,完成数据库操作。
100、 举例:
