pdo类的使用实例

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

PHP中PDO的基础使用实例

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

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
define( 'DB_NAME' 'pdo_test' );
define( 'DB_USER' 'root' );
define( 'DB_PASSWORD' '' );
define( 'DB_HOST' 'localhost' );
define( 'DB_CHARSET' 'utf8' );
try  {
     $DBH  new  PDO( 'mysql:host=' .DB_HOST. ';dbname=' .DB_NAME, DB_USER, DB_PASSWORD);
     $DBH -> exec ( 'SET CHARACTER SET ' .DB_CHARSET);
     $DBH -> exec ( 'SET NAMES ' .DB_CHARSET);
catch  (PDOException  $e ) {
     print  "Error!: "  $e ->getMessage() .  "<br/>" ;
     die ();
}
?>

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

示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
//增加数据
$sql_insert  'Insert INTO wp_options(blog_id,option_name,option_value,autoload) VALUES (0,' .time().rand(1,100). ',' .time().rand(1,100). ',\'no\')' ;
$back  $DBH -> 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已经封装好了,我们只需要调用就可以了。

示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
try {
     $DBH ->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在执行存储过程时这里还是运用了比较老的方法,因为这一块UncleToo也还没完全搞明白。如果大家有更好的办法可以拿出来共享一下。

看代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
$sql_procedure  = '
             Create PROCEDURE inout_test(
                 IN in_option_id INT,
                 OUT out_option_name VARCHAR(255),
                 OUT out_option_value TEXT
             )
             BEGIN
                 Select option_name INTO out_option_name   FROM wp_options Where option_id = in_option_id;
                 Select option_value INTO out_option_value FROM wp_options Where option_id = in_option_id;
             END ;
';
try {
     $sql_drop_procedure  'Drop PROCEDURE inout_test' ;
     $back  $DBH -> 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的预处理机制用好了,对于程序来说是很不错的。

看下面这段实例代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<?php
$stmt  $DBH ->prepare( 'Insert INTO wp_options(blog_id,option_name,option_value,autoload) VALUES (0,:option_name,:option_value,\'no\')' );
$option_name  $option_value  '' ;
$stmt ->bindParam( ':option_name' $option_name );  //
$stmt ->bindParam( ':option_value' $option_value );
                                                                  
// 插入一条数据A
$option_name  'name' .time();
$option_value  'value' .time();
$stmt ->execute();
                                                                  
// 插入另一条不同的数据B
$option_name  'name_' .time();
$option_value  'value_' .time();
$stmt ->execute();
                                                                  
$stmt  $DBH ->prepare( 'Insert INTO wp_options(blog_id,option_name,option_value,autoload) VALUES (0,?,?,\'no\')' );
$option_name  $option_value  '' ;
$stmt ->bindParam( '1' $option_name );  //
$stmt ->bindParam( '2' $option_value );
                                                                  
// 这里我们还可以插入A数据
$option_name  'name' .time();
$option_value  'value' .time();
$stmt ->execute();
                                                                  
// 这里我们同样还可以插入B数据
$option_name  'name_' .time();
$option_value  'value_' .time();
$stmt ->execute();
                                                                  
                                                                  
$stmt  $DBH ->prepare( "Select * FROM wp_options where option_id = ?" );
if  ( $stmt ->execute( array (@ $_GET [ 'option_id' ]))) {
   while  (@ $row  $stmt ->fetch()) {
     print_r( $row );
   }
}
?>

上面介绍的这些都是PDO的基础,基本能满足我们在开发过程中的需要,对于其他功能,比如PDO大对象,错误处理,游标等功能大家可以参考PHP官方手册,这里就不在说明了(其实UncleToo也不会^_^...)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值