说道PDO首先应该想到的问题:
下面博主给大家讲解下相关问题:
1.什么是PDO?
PDO类似于mysqli,其不同的是PDO能对不同数据库的操作,方便使用。
2.为什么要用pdo?
更换其他数据库的时候不需要更改代码
3.PDO的使用方法:
PDO是PHP5新加入的一个重大功能,我们的数据库服务器为MySQL,所有的程序代码的数据库操作全是一mysql()或者mysqli()函数来操作,当我们的数据库 需要更换时比如换成,SQL、SERVER、PostgreSQL、MS 等,我们不可能去修 改所有的程序代码!所以就要用到PDO,PDO很好的帮我们解决了这个问题,使用PDO操作非常方便,只需要修改数据源格 式,和加载相应的驱动文件到PHP.ini即可;
用法步骤:
1:首先你需要开启一项配置,开启php.ini中的(php_pdo_mysql.dll);
找到extension_dir='';路径就是你的扩展目录
2:对于操作数据库事应该注意的事项(下面将博主的事例展示给大家看):
# pdo连接数据库
$dbms = 'mysql'; # 数据库类型
$host = 'localhost'; # 数据库主机名
$dbName = 'DB_NAME'; # 使用的数据库
$user = '****'; # 数据库连接用户名
$pass = '****'; # 对应的密码
$dsn = "$dbms:host=$host;dbname=$dbName";
# 初始化PDO得到对象(请注意参数);
$db = new PDO($dsn, $user, $pass, array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'utf8';")); //初始化一个PDO对象
$sql = "select money from bank where id = 1";
$result = $db->query($sql);
$result->setFetchMode(PDO::FETCH_ASSOC);
$arr = $result->fetch();
注释:
1、query()执行查询语句,返回结果集对象;
2、用循环利用fetch()方法逐个的取出记录,返回的是关联数组和索引数组两种数组,和mysql_fetch_array()的返回结果一致
3、fetchAll()方法可以一次取出结果集中所有的数组,以二维数组的形式返回,但仍然是关联数组和索引数组两种数组
添加:
主要思路:
1)连接数据库、数据库的用户名、数据库的密码
2)生成PDO对象
3)执行添加
在这里博主总结出几点:
1. 开启事务start transaction,可以简写为 begin
2. 然后记录之后需要执行的一组sql
3. 事务提交commit
4. 如果所有的sql都执行成功,则提交,将sql的执行结果持久化到数据表内。
5. 事务回滚rollback
6. 如果存在失败的sql,则需要回滚,将sql的执行结果,退回到事务开始之时
7. 无论回滚还是提交,都会关闭事务!需要再次开启,才能使用。
8. 还有一点需要注意,就是事务只针对当前连接。
事务的四大特点:(面试常见题)
原子性(Atomicity):
事务是数据库的逻辑工作单位,它对数据库的修改要么全部执行,要么全部不执行。
一致性(Consistemcy):
事务前后,数据库的状态都满足所有的完整性约束。
隔离性(Isolation):
并发执行的事务是隔离的,一个不影响一个。如果有两个事务,运行在相同的时间内,执行相同的功能,事务的隔离性将确保每一事务在系统中认为
只有该事务在使用系统。这种属性有时称为串行化,为了防止事务操作间的混淆,必须串行化或序列化请求,使得在同一时间仅有一个请求用于同一数据。
通过设置数据库的隔离级别,可以达到不同的隔离效果。
持久性(Durability):
在事务完成以后,该事务所对数据库所作的更改便持久的保存在数据库之中,并不会被回滚。
注:关于一致性可能有些人不太理解,OK,我再来举个例子解释一下
A向B转账,假设转账之前这两个用户的钱加起来总共是2000,那么A向B转账之后,不管这两个账户怎么转,A用户的钱和B用户的钱加起来的总额还是2000,这个就是事务的一致性。