PHP中PDO连接数据库的操作步骤

这篇文章主要介绍了PHP中PDO连接数据库的操作步骤,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获。下面让小编带着大家一起了解一下。

创新互联专注为客户提供全方位的互联网综合服务,包含不限于成都网站设计、成都网站制作、翠屏网络推广、微信小程序、翠屏网络营销、翠屏企业策划、翠屏品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们最大的嘉奖;创新互联为所有大学生创业者提供翠屏建站搭建服务,24小时服务热线:18982081108,官方网址:www.cdcxhl.com

PDO—数据库抽象层

简介:PDO扩展为PHP访问数据库定义了一个轻量级的、一致性的接口,PDO解决了数据库连接不统一的问题。

一、 PDO简介

本章主要介绍PDO的安装与配置,以及使用PDO连接数据库的方法。

1-1PDO简介

PDO是PHP Data Object(PHP数据对象)的简称,它是与PHP5.1版本一起发布的,目前支持的数据库包括Firebird、FreeTDS、Interbase、MySQL、MS SQL Server、ODBC、Oracle、Postgre SQL、SQLite和Sybase。当操作不同数据库时,只需要修改PDO中的DSN(数据库源) ,即可使用PDO的统一接口进行操作。

PDO特性:

编码一致性:PDO提供可用于各种数据库的单一接口

灵活性:PDO在运行时必须加载数据库驱动程序,所以不需要每次在使用数据库时,重新配置和重新编译PHP

高性能:PDO是用C语言编写的编译为PHP,与用php编写的其他方案相比,虽然其他功能相同,但提供了更高的性能

面向对象特性:PDO是利用的PHP5面向对象的特性,可以获得更高效的数据库通信。

注意:PDO扩展只是一个抽象的接口层,利用PDO扩展本身,并不能实现任何数据库的操作,必须使用一个特性的形式把各自的特色表现出来才行。

PHP中PDO连接数据库的操作步骤

1-2 PDO的配置与启用

1-3 PDO连接数据库

PHP中PDO连接数据库的操作步骤

1.通过参数形式连接数据库(重点掌握此种办法)

//通过参数形式连接数据库
try{
 $dsn='mysql:host=localhost;dbname=school';
 $username='root';
 $password='root';
 $pdo=new PDO($dsn,$username,$password);
 var_dump($pdo);
}catch (PDOException $e){
    echo $e->getMessage();
};

需要注意:dsn是你的数据源

输出结果:object(PDO)#1 (0) { }

二、 PDO对象的使用

主要介绍PDO对象方法的使用。

2-1 [PDO] exec()方法执行建表操作  PHP中PDO连接数据库的操作步骤

PHP中PDO连接数据库的操作步骤

exec($sql);
    var_dump($res);
}catch (PDOException $e){
    echo $e->getMessage();
};

输出结果:int(0);

2-2 [PDO] exec()方法执行插入记录操作

续上面:插入一条或多条记录

exec($sql);
    echo $res;
}catch (PDOException $e){
    echo $e->getMessage();
};
exec($sql);
    echo '受影响的记录的条数为:'. $res."
"; //$pdo->lastInsertId():得到新插入记录的ID号 //echo '最后插入的ID号为:'.$pdo->lastInsertId(); }catch (PDOException $e){ echo $e->getMessage(); };

2-3 [PDO] exec()方法执行其他SQL操作

PHP中PDO连接数据库的操作步骤

本身是king,修改为king,会是0条记录被影响.

lastInsertId() 只能对插入有影响。

exec()对查询无作用

2-4 [PDO] errorCode()和errorInfo()方法查看错误信息

exec($sql);
    if($res===false){
        //$pdo->errorCode(); SQLSTATE的值
        echo $pdo->errorCode();
        echo '
'; //$pdo->errorInfo():返回的错误信息的数组,数组中包含3个单元 //0=>SQLSTATE(错误编号),1=>CODE(错误码),2=>INFO(错误信息) $errInfo=$pdo->errorInfo(); print_r($errInfo); } }catch (PDOException $e){ echo $e->getMessage(); };

2-5 [PDO] query()方法执行查询语句

query($sql):执行sql语句,返回PDOStatement对象:需要遍历这个对象,将里面的内容取出来
    $stmt=$pdo->query($sql);
    var_dump($stmt); //只能看出这个语句返回的是一个对象
    echo '
'; foreach ($stmt as $row){ print_r($row); echo '
'; echo '编号:'.$row['id'].'
'; echo '用户名:'.$row['teaname'].'
'; echo '邮箱:'.$row['email'].'
'; echo '
'; } }catch (PDOException $e){ echo $e->getMessage(); };
Query()用于插入数据

query($sql):执行sql语句,返回PDOStatement对象:需要遍历这个对象,将里面的内容取出来
    $stmt=$pdo->query($sql);
    var_dump($stmt); //只能看出这个语句返回的是一个对象
}catch (PDOException $e){
    echo $e->getMessage();
};

注意:更多的用query()查询数据,用exec()实现增删改

2-6 [PDO] prepare()和execute()方法执行查询语句

PHP中PDO连接数据库的操作步骤

prepare($sql);准备sql语句
    $stmt=$pdo->prepare($sql);
    //execute():执行预处理语句
    $res=$stmt->execute();
    //var_dump($res); //会返回bool(true)
    //查数据使用
    //fetch():得到结果集中的一条记录(作为索引+关联样式返回)
    $row=$stmt->fetch();
    print_r($row);
}catch (PDOException $e){
    echo $e->getMessage();
};
prepare($sql);准备sql语句
    $stmt=$pdo->prepare($sql);
    //execute():执行预处理语句
    $res=$stmt->execute();
    //var_dump($res); //会返回bool(true)
    //查数据使用
    //fetch():得到结果集中的一条记录(作为索引+关联数组)
    /*if($res){
        while ($row=$stmt->fetch()){
            print_r($row);
            echo '
'; } }*/ //fetchAll() 查询所有记录,以二维数组(索引+关联方式) $rows=$stmt->fetchAll(); print_r($rows); }catch (PDOException $e){ echo $e->getMessage(); };

指定类型:我们更多的是想得到关联数组,我们可以通过两种方式来获得,第一种方式:设置其取回数据的方式(设置参数、常量);第二种方式:通过方法

三、 PDOStatement对象的使用

本章主要介绍PDOStatement对象方法的使用,以及参数的绑定与预处识。

PHP中PDO连接数据库的操作步骤

3-1 [PDO] quote()方法防止SQL注入

带条件查询 登录实现的例子

quote($username);
    $sql="select * from t_user WHERE `name`={$username} AND  `password`={$password}";
    echo $sql;
    $stmt=$pdo->query($sql);
    //PDOStatement对象的方法:rowCount() :对于select操作返回的结果集中记录的条数,
    //对于INSERT、UPDATE、DELETE返回受影响的记录的条数
    echo $stmt->rowCount();
}catch (PDOException $e){
    echo $e->getMessage();
}

3-2 [PDO] 预处理语句中的占位符的使用

prepare($sql);
$stmt->execute(array(":username"=>$username,":password"=>$password));
    //PDOStatement对象的方法:rowCount() :对于select操作返回的结果集中记录的条数,
    //对于INSERT、UPDATE、DELETE返回受影响的记录的条数
   echo $stmt->rowCount();
    //第二种方法
    $sql="select * from t_user WHERE `name`=? and  `password`=?";
    $stmt=$pdo->prepare($sql);
    $stmt->execute(array($username,$password));
    echo $stmt->rowCount();
}catch (PDOException $e){
    echo $e->getMessage();
}

3-3 [PDO] bindParam()方法绑定参数

两种方式:命名参数占位符,问号方式

prepare($sql);
    $stmt->bindParam(":username",$username,PDO::PARAM_STR);
    $stmt->bindParam(":password",$password,PDO::PARAM_STR);
    $stmt->bindParam(":sex",$sex,PDO::PARAM_STR);
    $username='张三';
    $password='123654';
    $sex='M';
   $stmt->execute();
   echo $stmt->rowCount();
}catch (PDOException $e){
    echo $e->getMessage();
}
prepare($sql);
    $stmt->bindParam(1,$username);
    $stmt->bindParam(2,$password);
    $stmt->bindParam(3,$sex);
    $username='张三1';
    $password='1236541';
    $sex='F';
    $stmt->execute();
    echo $stmt->rowCount();
}catch (PDOException $e){
    echo $e->getMessage();
}

3-4 [PDO] bindValue()方法绑定参数

向用户表插入数据:命名参数占位符,问号方式类似

prepare($sql);
    $username='李四';
    $password='123654';
    $stmt->bindValue(1,$username);
    $stmt->bindValue(2,$password);
    $stmt->bindValue(3,'M');
    $stmt->execute();
    echo $stmt->rowCount();
    $username='李四1';
    $password='1236541';
    $stmt->bindValue(1,$username);
    $stmt->bindValue(2,$password);
    $stmt->bindValue(3,'M');
    $stmt->execute();
    echo $stmt->rowCount();
}catch (PDOException $e){
    echo $e->getMessage();
}

3-5 [PDO] bindColumn()方法绑定参数

PHP中PDO连接数据库的操作步骤

prepare($sql);
    $stmt->execute();

  echo '结果集中的列数一共有:'.$stmt->columnCount();

    echo "
"; print_r($stmt->getColumnMeta(0)); $stmt->bindColumn(1,$username); $stmt->bindColumn(2,$password); $stmt->bindColumn(3,$sex); while ($stmt->fetch(PDO::FETCH_BOUND)){ echo '用户名:'.$username."-密码:".$password."-性别:".$sex."
"; } echo $stmt->rowCount(); }catch (PDOException $e){ echo $e->getMessage(); }

3-6 [PDO] fetchColumn()方法从结果集中返回一列

query($sql);
    //索引默认从0开始
    echo $stmt->fetchColumn(0),"
"; echo $stmt->fetchColumn(1),"
"; echo $stmt->fetchColumn(2); }catch (PDOException $e){ echo $e->getMessage(); }

3-7 [PDO] debugDumpParams()方法打印一条预处理语句

prepare($sql);
    $stmt->bindParam(":username",$username,PDO::PARAM_STR);
    $stmt->bindParam(":password",$password,PDO::PARAM_STR);
    $stmt->bindParam(":sex",$sex,PDO::PARAM_STR);
    $username='张三';
    $password='123654';
    $sex='M';
    $stmt->execute();
    $stmt->debugDumpParams();
}catch (PDOException $e){
    echo $e->getMessage();
}

四、PDO事务处理

主要介绍如何使用PDO进行事务处理

4-1 PDO错误处理模式

3种错误处理模式

静默模式

query($sql);
    echo $pdo->errorCode();
    echo '
'; echo $pdo->errorInfo(); }catch (PDOException $e){ echo $e->getMessage(); }
setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_WARNING);
    //设置异常模式:推荐使用
    $pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
    $sql="select * from nonet_user";
    $stmt=$pdo->query($sql);
    echo $pdo->errorCode();
    echo '
'; echo $pdo->errorInfo(); }catch (PDOException $e){ echo $e->getMessage(); }

4-2 PDO事务处理

beginTransaction();
    var_dump($pdo->inTransaction());
    $sql="update account set money=money-200  WHERE username='king'";
    $res=$pdo->exec($sql);
    if($res==0){
        throw new PDOException('转账失败');
    }
    $res1=$pdo->exec('update account set money=money+200  WHERE username="queen"');
    if($res1==0){
        throw new PDOException('接收失败');
    }
    $pdo->commit();
}catch (PDOException $e){
    $pdo->rollBack();
    echo $e->getMessage();
}

感谢你能够认真阅读完这篇文章,希望小编分享PHP中PDO连接数据库的操作步骤内容对大家有帮助,同时也希望大家多多支持创新互联,关注创新互联行业资讯频道,遇到问题就找创新互联,详细的解决方法等着你来学习!


文章名称:PHP中PDO连接数据库的操作步骤
标题路径:http://scyanting.com/article/ghdogi.html