PHP 5.1 发布时将附带一个全新的数据库连接层,即 PHP Data Objects (PDO)。虽然 PHP 一直都拥有很好的数据库连接,但 PDO 让 PHP的数据库操作 达到一个新的高度。PDO可支持基本的MysqL、Microsoft sql Server、Oracle等数据库,并且提供了统一的操作方法,高度集成了数据库操作。PDO的使用较好的解决项目开发过程中可能存在的数据库更换问题。
PDO对数据库的操作方法如增删改查,进行了统一整合,但对原始的数据库语句存在的差异,并不能完美的解决,比如MysqL的 limit 来查询第 m 行到第 n 行的记录使用 (select * from 表名 limit m,n),而Microsoft sql Server则需要使用top命令的组合等。
此外,使用PDO的预处理函数prepare(),能很好的解决sql注入问题。
打开/连接数据库:
PHP
'<Meta charset="utf-8">';解决乱码问题
=
= 'localhost'
= '3306' 数据库
= 'dbdong' 用户
= 'root'
= 'root' 数据库都存在差异
= "MysqL:host=;port=;dbname=" true)
= PDO(,,
->query("set names utf8"
"连接数据库成功"
} (PDOException ("不能连接数据库". }
补充:
->getAttribute(PDO::ATTR_SERVER_VERSION);数据库版本
->getAttribute(PDO::ATTR_CLIENT_VERSION);数据库版本
错误报告。
错误代码。
错误
获取到当前设置的错误模式
->getAttribute(PDO:: 数据库操作问题,会产生警告,推荐
->setAttribute(PDO::ATTR_ERRMODE,PDO::
->("delete from xxx");
数据库操作:
sql语句“) 用来处理非结果集的
sql语句“,模式取值) 可用来处理所有语句
获取结果的模式:
查询并全部输出小例子
=->query("select * from c",PDO::
(=-> 输出
( }
事物处理:
开始事物->提交事物
错误模式为抛出异常
->setAttribute(PDO::ATTR_ERRMODE,PDO::
-> =->("update c set CN='222222'" =->("update c sext PCNO='222222222222'" (<=0
PDOException("哇,我自己抛出异常"
->
}(PDOException "-----------------------".
-> }
预处理:
更新实现列子
错误模式为抛出异常
->setAttribute(PDO::ATTR_ERRMODE,PDO::
sql语句
=->prepare("update c set CN='dongxiaodong1' where CNO=?"
="C1" ->bindParam(1,
->
"影响的行数:".->
="C3" ->bindParam(1, ->
->execute(("C4"
}(PDOException "!!!!!!!!".
}
查询实现列子
错误模式为抛出异常
->setAttribute(PDO::ATTR_ERRMODE,PDO::
sql语句
=->prepare("select *from c where CN=:nam"
获取数据模式,模式参考上表,范围$res以下
setFetchMode(PDO::FETCH_NUM);
->execute(("nam"=>"dongxiaodong"
"查询到的总行数为:".->
获取单行:fetch(参数1),参数1可以更改返回模式,参考上面的模式表格
获取全部:fetchall(参数1)
(->fetchall(PDO::
}(PDOException "!!!!!!!!!".
}