您现在的位置:计算机技术学习网 > 技术中心 > WEB编程 > PHP >

php 新的数据库连接方式 PHP Data Object

来源:网络 责任编辑:栏目编辑 发表时间:2013-07-01 13:21 点击:

PHP数据对象(PDO)扩展定义了一个轻型的一致的访问数据库的接口.每个实现了PDO接口的驱动程序像一般的扩展函数一样展示数据库相关的特性.不能用PDO函数本身执行任何数据库函数,必须使用数据库相关的驱动程序来访问数据库服务器。
PDO提供了一个数据访问抽象层,意思是不需要知道正在使用什么数据库,就可以用同样的函数发布查询和检索数据。
PDO绑定到了PHP5.1中,在PHP5.0中可以作为PECL扩展使用,PDO要求新的PHP5核心的面向对象的特性,在之前的版本不能运行。

 -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
下面是转的,作为入门读物了。

★数据库的连接:
我们通过下面的例子来分析PDO连接数据库,
<?php
$dbms=mysql;     //数据库类型 Oracle 用ODI,对于开发者来说,使用不同的数据库,只要改这个,不用记住那么多的函数了
$host=localhost;//数据库主机名
$dbName=test;   //使用的数据库
$user=root;      //数据库连接用户名
$pass=;         //对应的密码
$dsn="$dbms:host=$host;dbname=$dbName";
//

try{
   $dbh=newPDO($dsn,$user,$pass);//初始化一个PDO对象,就是创建了数据库连接对象$dbh
   echo"连接成功<br/>";
   /*你还可以进行一次搜索操作

   foreach($dbh->query(SELECT * from FOO)as$row){
        print_r($row);//你可以用 echo($GLOBAL); 来看到这些值
   }
   */
   $dbh=null;
}catch(PDOException$e){
   die("Error!: ".$e->getMessage()."<br/>");
}
//默认这个不是长连接,如果需要数据库长连接,需要最后加一个参数:array(PDO::ATTR_PERSISTENT => true) 变成这样:
$db=newPDO($dsn,$user,$pass,array(PDO::ATTR_PERSISTENT=>true));
?>

★数据库查询:

上面我们已经进行了一次查询,我们还可以使用如下的查询:
<?php
$db->setAttribute(PDO::ATTR_CASE,PDO::CASE_UPPER); //设置属性
$rs=$db->query("SELECT * FROM foo");
$rs->setFetchMode(PDO::FETCH_ASSOC);
$result_arr=$rs->fetchAll();
print_r($result_arr);
?>

以上因为用到setAttribute()方法,放上那两个参数,把字段名强制转换成大写。下面列出多有PDO::setAttribute()的参数:

PDO::ATTR_CASE: 强制列名变成一种格式,详细如下(第二个参数):

PDO::CASE_LOWER: 强制列名是小写.

PDO::CASE_NATURAL: 列名按照原始的方式

PDO::CASE_UPPER: 强制列名为大写.

PDO::ATTR_ERRMODE: 错误提示.

PDO::ERRMODE_SILENT: 不显示错误信息,只显示错误码.

PDO::ERRMODE_WARNING: 显示警告错误.

PDO::ERRMODE_EXCEPTION: 抛出异常.

PDO::ATTR_ORACLE_NULLS(不仅仅是ORACLE有效,别的数据库也有效): )指定数据库返回的NULL值在php中对应的数值。

PDO::NULL_NATURAL: 不变.

PDO::NULL_EMPTY_STRING: Empty string is converted toNULL.

PDO::NULL_TO_STRING: NULL is converted to an empty string.

PDO::ATTR_STRINGIFY_FETCHES: Convert numeric values to strings when fetching. Requires bool.

PDO::ATTR_STATEMENT_CLASS: Set user-supplied statement class derived from PDOStatement. Cannot be used with persistent PDO instances. Requiresarray(string classname, array(mixed constructor_args)).

PDO::ATTR_AUTOCOMMIT(available in OCI, Firebird and MySQL): Whether to autocommit every single statement.

PDO::MYSQL_ATTR_USE_BUFFERED_QUERY(available in MySQL): Use buffered queries.

例子中的$rs->setFetchMode(PDO::FETCH_ASSOC);是PDOStatement::setFetchMode(),对返回类型的声明。
有如下:
PDO::FETCH_ASSOC-- 关联数组形式
PDO::FETCH_NUM   -- 数字索引数组形式
PDO::FETCH_BOTH  -- 两者数组形式都有,这是缺省的
PDO::FETCH_OBJ  -- 按照对象的形式,类似于以前的 mysql_fetch_object()

更多返回类型声明(PDOStatement::方法名)看手册。

★插入,更新,删除数据,
$db->exec("DELETE FROM `xxxx_menu` where mid=43");

简单的总结一下上面的操作:
查询操作主要是PDO::query()、PDO::exec()、PDO::prepare()。
PDO::query()主要是用于有记录结果

    相关新闻>>

      发表评论
      请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
      用户名: 验证码:点击我更换图片
      最新评论 更多>>

      推荐热点

      • PHP测试
      • 十天学会php之第六天
      • 几种显示数据的方法的比较
      • 使用xmlhttp为网站增加域名查询功能
      • PHP+MYSQL+Javascript数据库查询结果的动态显示
      • 查找数组中指定键名的值
      • 用redis实现跨服务器session
      • 用新浪微博接口发送图片微博失败的原因
      • smarty局部缓存技术[源码分析]
      网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
      Copyright © 2008-2015 计算机技术学习交流网. 版权所有

      豫ICP备11007008号-1