php数据库抽象层 PDO


Posted in PHP onMay 07, 2011

下面就来介绍一下数据库抽象层PDO的使用:

PDO(PHP Data Objects)是一个轻量级的PHP扩展,提供了一个数据访问抽象层。还要就是PDO只能在PHP5.0以上版本使用。

下面来介绍一下PDO常用的预定义常量:

PDO::PARAM_BOOL (integer)

表示布尔数据类型

PDO::PARAM_NULL (integer)

表示数据类型为NULL的SQL

PDO::PARAM_INT (integer)

 表示为integer数据类型的SQL

PDO::PARAM_STR (integer)

 表示为char varchar 或者其他字符串的数据类型的SQL

PDO::PARAM_LOB (integer)

 表示对象数据类型的SQL

PDO::FETCH_LAZY (integer)

指定的获取方式,应当返回结果集的每一行作为一个对象的变量名,对应于它的字段名

PDO::FETCH_ORI_NEXT (integer) 取结果集的下一行

PDO::FETCH_ORI_PRIOR (integer取结果集的前面的行

PDO::FETCH_ORI_FIRST (integer取结果集的第一行

PDO::FETCH_ORI_LAST (integer) 取结果集的最后一行

PDO::ATTR_PERSISTENT (integer)   创建一个持久连接,而不是新创建一个连接

PDO的基本用法:

使用PDO与数据库连接(这里只使用MySQL):

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

下面的代码是对MySQL连接错误时的处理:
<?php 
try { 
$dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass); 
foreach($dbh->query('SELECT * from FOO') as $row) { 
print_r($row); 
} 
$dbh = null; 
} catch (PDOException $e) { 
print "Error!: " . $e->getMessage() . "<br/>"; 
die(); 
} 
?>

下面是两个重复使用插入语句的例子:
<?php 
$stmt = $dbh->prepare("INSERT INTO REGISTRY (name, value) VALUES (:name, :value)"); 
$stmt->bindParam(':name', $name); 
$stmt->bindParam(':value', $value); // insert one row 
$name = 'one'; 
$value = 1; 
$stmt->execute(); 
// insert another row with different values 
$name = 'two'; 
$value = 2; 
$stmt->execute(); 
?>

<?php 
$stmt = $dbh->prepare("INSERT INTO REGISTRY (name, value) VALUES (?, ?)"); 
$stmt->bindParam(1, $name); 
$stmt->bindParam(2, $value); // insert one row 
$name = 'one'; 
$value = 1; 
$stmt->execute(); 
// insert another row with different values 
$name = 'two'; 
$value = 2; 
$stmt->execute(); 
?>

对数据库进行查询操作:
<?php 
$stmt = $dbh->prepare("SELECT * FROM REGISTRY where name = ?"); 
if ($stmt->execute(array($_GET['name']))) { 
while ($row = $stmt->fetch()) { 
print_r($row); 
} 
} 
?>

PHP 相关文章推荐
推荐一篇入门级的Class文章
Mar 19 PHP
加强版phplib的DB类
Mar 31 PHP
PHP memcache扩展的三种安装方法
Apr 26 PHP
GBK的页面输出JSON格式的php函数
Feb 16 PHP
php 高性能书写
Dec 11 PHP
PHP冒泡排序算法代码详细解读
Jul 17 PHP
如何给phpcms v9增加类似于phpcms 2008中的关键词表
Jul 01 PHP
php实现查询百度google收录情况(示例代码)
Aug 02 PHP
php计算两个整数的最大公约数常用算法小结
Mar 05 PHP
PHP接口并发测试的方法(推荐)
Dec 15 PHP
PHP实现二维数组根据key进行排序的方法
Dec 30 PHP
ThinkPHP3.2.3框架实现的空模块、空控制器、空操作,跳转到错误404页面图文详解
Apr 03 PHP
php cookies中删除的一般赋值方法
May 07 #PHP
php中通过Ajax如何实现异步文件上传的代码实例
May 07 #PHP
php 安全过滤函数代码
May 07 #PHP
PHP 遍历文件实现代码
May 04 #PHP
PHP中使用CURL伪造来路抓取页面或文件
May 04 #PHP
php中记录用户访问过的产品,在cookie记录产品id,id取得产品信息
May 04 #PHP
PHP的substr_replace将指定两位置之间的字符替换为*号
May 04 #PHP
You might like
推荐个功能齐全的发送PHP邮件类
2007/01/03 PHP
php 上传文件类型判断函数(避免上传漏洞 )
2010/06/08 PHP
PHP实现删除非站内外部链接实例代码
2014/06/17 PHP
php实现基于openssl的加密解密方法
2016/09/30 PHP
JavaScript 反科里化 this [译]
2012/09/20 Javascript
jQuery教程 $()包装函数来实现数组元素分页效果
2013/08/13 Javascript
jQuery中slideUp()方法用法分析
2014/12/24 Javascript
javascript实现input file上传图片预览效果
2015/12/31 Javascript
基于jquery实现百度新闻导航菜单滑动动画
2016/03/15 Javascript
jQuery插件fullPage.js实现全屏滚动效果
2016/12/02 Javascript
Javascript中字符串replace方法的第二个参数探究
2016/12/05 Javascript
Angularjs根据json文件动态生成路由状态的实现方法
2017/04/17 Javascript
微信小程序多音频播放进度条问题
2018/08/28 Javascript
解决vue动态为数据添加新属性遇到的问题
2018/09/18 Javascript
微信小程序点击按钮动态切换input的disabled禁用/启用状态功能
2020/03/07 Javascript
在vue中使用el-tab-pane v-show/v-if无效的解决
2020/08/03 Javascript
JavaScript实现4位随机验证码的生成
2021/01/28 Javascript
[06:21]完美世界亚洲区首席发行官竺琦TI3采访
2013/08/26 DOTA
[01:45]2014DOTA2 TI预选赛预选赛 大神专访第二弹!
2014/05/20 DOTA
[40:01]OG vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
python中执行shell的两种方法总结
2017/01/10 Python
15行Python代码带你轻松理解令牌桶算法
2018/03/21 Python
使用Python的toolz库开始函数式编程的方法
2018/11/15 Python
python3爬虫学习之数据存储txt的案例详解
2019/04/24 Python
如何更改 pandas dataframe 中两列的位置
2019/12/27 Python
tensorflow之并行读入数据详解
2020/02/05 Python
python可以用哪些数据库
2020/06/22 Python
Pytorch 图像变换函数集合小结
2021/02/01 Python
html5 viewport使用方法示例详解
2013/12/02 HTML / CSS
MVMT手表官方网站:时尚又实惠的高品质手表
2016/12/04 全球购物
捷克汽车配件和工具销售网站:TorriaCars
2018/02/26 全球购物
编程实现当输入某产品代码则打印出该产品记录的功能
2014/05/03 面试题
自我鉴定怎么写
2013/12/05 职场文书
学期评语大全
2014/04/30 职场文书
2015年会计年终工作总结
2015/05/26 职场文书
python 中的@运算符使用
2021/05/26 Python