• 冒险村物语
  • 英雄无敌3塔防
  • 驾考家园手游

PHP中PDO的基础应用实例

2014-09-05

PHP开发中,mysql或者mysqli是现在大家使用较多的数据库连接方式。在PHP5中已经开始有PDO支持了,听说在下一个版本PHP6中,PDO将会作为默认的数据库链接工具,不管是真还是假,PDO作为数据库的另一种连接方式在不久的将来也许会很普遍的使用,这里清源就目前掌握的知识来看,将PDO的使用以实例的方式和大家分享一下,文章的部分代码来源于网络。


在使用PDO之前首先要设置PHP.INI文件,使PHP支持PDO,因为PHP5默认是不支持的。在PHP安装目录下找到PHP.INI文件,打开并搜索extension=php_pdo.dll 和 extension=php_pdo_mysql.dll,将前面的分号(;)去掉,重启apache即可。


接下来我们就开始写PHP代码了,首先是连接数据库,看下面的例子:


exec('SET CHARACTER SET '.DB_CHARSET);    $DBH->exec('SET NAMES '.DB_CHARSET);} catch (PDOException $e) {    print "Error!: " . $e->getMessage() . "
"; die();}?>


连接成功后,我们需要对数据库中的数据进行增删改查操作,这里主要用到exec和query两个函数。


示例:


exec($sql_insert); //返回 bool 的true or fal$lastInsertId = $DBH->lastInsertId();//删除数据$sql_delete = 'Delete FROM wp_options Where option_id='.$lastInsertId;$back = $DBH->exec($sql_delete); //返回 bool 的true or fal$lastInsertId = $DBH->lastInsertId();//更新数据$sql_update = 'Update wp_options SET option_name = /''.time().rand(1,100).'/' Where option_id='.$lastInsertId;$lastUpdateId = $DBH->lastInsertId(); //返回的对应的操作的id//查询数据$sql_select = 'Select option_id FROM wp_options orDER BY option_id DESC LIMIT 4 ';$back = $DBH->query($sql_select); //返回一个对象 这个对象可以用foreach 直接遍历循环 循环的为查询的结果集$back = $DBH->query($sql_select)->fetch(); //返回一条数据结果 这个对象可以用foreach 直接遍历循环 循环的为查询的结果集$back = $DBH->query($sql_select)->fetchAll(); //返回一个数组 这个对象可以用foreach 直接遍历循环 循环的为查询的结果集$back = $DBH->query($sql_select)->fetchColumn(0); //返回一个字段字符串,这个字符串是返回的记录的第一条记录的第一个字段?>


到这里,PDO的基本操作基本上结束了。对于一般的企业网站,小型的管理系统基本上能满足了,但是,如果我们开发大型网站或者逻辑较复杂的管理系统,仅仅靠数据的读写是远远不够的,我们可能还需要对数据库的存储过程、事务等对象进行操作,下面我们继续看看用PDO是如何实现的。


对于事务,PDO已经封装好了,我们只需要调用就可以了。


示例:


beginTransaction();//开启一个事务    //Sql 执行的内容 ......................    $DBH->exec($sql_insert); //执行一系列的操作    $DBH->exec($sql_update);    $DBH->exec($sql_delete);    //等等    $DBH->commit(); //如果正确执行完成 那么确认 commit} catch(Exception $e) {    $DBH->rollBack();//如果执行中有错误的情况下  回滚}?>


这里重点说明一下,在使用事务时,一定要使用try..catch语句,当返回错误时事务不会提交。


PDO在执行存储过程时这里还是运用了比较老的方法,因为这一块清源也还没完全搞明白。如果大家有更好的办法可以拿出来共享一下。


看代码:


exec($sql_procedure);    $sql_call_procedure = 'CALL inout_test(100,@out_option_name,@out_option_value)';    $DBH->exec($sql_call_procedure);    $sql_select_procedure = 'Select @out_option_name,@out_option_value';    $back = $DBH->query($sql_select_procedure)->fetch();    $back = $DBH->exec($sql_drop_procedure);}catch(Exception $e){    echo $e->getMessage();}?>


另外UncleToo再给大家介绍一点关于PDO预处理方面的知识。预处理机制有很多好处,他可以使sql语句重复使用,而且执行效率比直接执行来的更高,所以,如果我们把PDO的预处理机制用好了,对于程序来说是很不错的。(PS:T不错的PHP Q扣

人气推荐

知识阅读

精彩推荐

  • 游戏
  • 软件
查看更多>>