php之PDO相关操作

/*

*******************初次使用PDO简介*******************

PDO:PHP Data Object,PHP数据对象(数据抽象层)

作用:能够解决用户在需要使用不同的数据库的时候进行来回的切换,PDO能够自动的进行数据库的切换,而且还能将所有的有可能存在的不兼容的语法进行兼容性处理。

//使用PDO连接mysql数据库

//数据库类型是mysql 主机地址是localhost 端口是3308 数据库是b2c 用户名和密码都是root
$pdo = new PDO('mysql:host=localhost;port=3308;dbname=b2c','root','root');
// var_dump($pdo);

 

//2.组织SQL语句
$sql = "show tables"; //查看所有表

//3.使用query方法来发送SQL语句给服务器(query()方法返回结果集 适用于查询 修改 删除 添加等使用exec()方法来完成),得到执行结果(返回的是一个PDOStatement类的对象)
$stmt = $pdo->query($sql);
//var_dump($stmt); $stmt是一个PDOStatement类的对象


//4.从结果集中获取数据

//打印数据
var_dump($stmt->fetch()); //是一个混合数组(索引和关联键的数组)

 

//5.关闭连接
//非常遗憾  PDO没有提供关闭连接的方法(可以使用unset来强制关闭连接)

unset($pdo);

*/

 

 


/*****************使用PDO完成对数据库的CURD操作**************/

/*
//1.连接数据库
$pdo = new PDO('mysql:host=localhost;port=3308;dbname=b2c','root','root');
//var_dump($pdo);


//设置字符集编码
$sql = "set names utf8";
$pdo->exec($sql);

//3.增删改查操作
//3.1 新增数据操作
$sql = "insert into b2c_admin values(null,'zyl','pwd','zyl@163.com')";

//$pdo->exec($sql); //开始执行SQL语句(我的数据库已成功添加这条数据)

//3.2修改数据
$sql = "update b2c_admin set aname='pdo' where id = 2";
//$affected_rows = $pdo->exec($sql); //已成功修改本条记录 exec()返回的是受影响的函数
//echo $affected_rows;  //输出1(受影响行数为1)


//3.3删除数据
$sql = "delete from b2c_admin where id = 11"; //数据库已成功删除本条数据
//$affected_rows = $pdo->exec($sql);
//echo $affected_rows;

 

//3.4 开始最麻烦的查询数据
$sql = "select * from b2c_admin order by id desc limit 1"; //查询id最大的那一条记录
$stmt = $pdo->query($sql); //因为是查询 所以使用$pdo->query()方法开始执行SQL 并且返回的是一个PDOStatement类的对象
echo '

';

var_dump($stmt->fetch());  //使用$stmt对象调用fetch()方法 输出数据,这就是查询数据

 

*/

 

 

/*******************PDO查询处理**************************/
//fetch查询

//1.连接数据库
//$pdo = new PDO('mysql:host=localhost;port=3308;dbname=b2c','root','root');

//2.设置字符集
//$sql = "set names utf8";
//$pdo->exec($sql);


//3.准备sql语句
//$sql = "select * from b2c_admin";


//4.调用$pdo对象下的query方法,返回一个PDOStatement类的对象
//$stmt = $pdo->query($sql);


//1.获取混合数组(索引和关联类型)
//echo '

';

//var_dump($stmt->fetch());

 

//2.得到一个关联数组
//var_dump($stmt->fetch(PDO::FETCH_ASSOC)); //里边的PDO::FETCH_ASSOC是一个常量,详情查手册


//3.得到一个索引数组
//var_dump($stmt->fetch(PDO::FETCH_NUM));
/*以上就是常用的fetch()方法*/


//4.得到全部数据(关联形式的),这里的fetchAll()方法是获取表中的所有数据,这就是和上面fetch()方法的区别
//var_dump($stmt->fetchAll(PDO::FETCH_ASSOC));

 

//fetColumn()
//var_dump($stmt->fetchColumn()); //获取到第一列的数据
//var_dump($stmt->fetchColumn(1));  //获取到第二列的数据(第二个字段的值)
/*以上就是fetchColumn()方法的用法和介绍*/

 

//bindColumn(); 将指定结果集中的fetch所得到的记录中的某个字段的值 赋值给指定变量
//$stmt->bindColumn('aname',$name);
//$stmt->bindColumn('aemail',$email);

//以上就是常用的PDO查询方法基本操作

 

 

 

/*****************PDO预处理*********************/
//什么是预处理呢?答:在真正执行某条SQL语句之前,先将SQL语句准备好,在执行过程中再绑定数据

/*
//1.准备预处理语句(发送给服务器,让服务器准备预处理语句)
// PDO::prepare:类似于exec将一条SQL语句发送给MySQL服务器

//2.执行预处理:将要操作的数据发送给预处理语句,再执行预处理语句
// PDO::Statement::execute([$array]):数组用来传递对应的参数

//预处理案例代码如下:
//1.连接认证
$pdo = new PDO("mysql:host=localhost;port=3308;dbname=b2c",'root','root');

//发送预处理
//PDO::prepare 能够自动的准备下一个预处理语句,用户需要准备的只是预处理所要执行的语句
//需求:往管理员表里循环插入10条数据
$sql1 = "insert into b2c_admin values(null,:aname,:apassword,:aemail)";
//PDO的预处理能够自动的将对应的以:开始的变量给记录下来,实际发送给服务器的是?(问号)

//发送预处理(返回的是一个PDOStatement类的一个对象)
$stmt = $pdo->prepare($sql1);

//给预处理绑定数据(这里就是把上方SQL语句中的:aname,:apassword等给绑定对应的数据)
$arr = array(':aname'=>'wangdongcheng',':apassword'=>'wdc',':aemail'=>'wdc@qq.com');

//执行预处理
$stmt->execute($arr);

//执行以上这段预处理代码之后 我的数据库就多了这一条数据。(以上只是预处理的一种方式,还可以用其它方式绑定预处理的数据比如可以使用bindParam()方法等)

*/

 

 


/******************PDO的事务处理**********************/
/*
//事务处理流程分为以下三个步骤:
//1.开启事物  PDO::beginTransaction
//2.事物操作(所有的事物操作基本上可以归为去除查询 就是增删改) 
//3.提交事物 PDO::commit:成功后提交数据   PDO::rollback:失败后回滚事物

//连接认证(这里的连接没有指定端口 那么就是默认的3306端口)
$pdo = new PDO("mysql:host=localhost;dbname=b2c",'root','root');

//1.开启事物
$res = $pdo->beginTransaction();

//2.事务处理(多条SQL语句执行)
$sql = "update account set username='abc' where id =1";
$lines = $pdo->exec($sql);  //执行SQL语句

//3.提交事物
if($lines == 1 )
{
    //更新成功,开始提交当前事物
    $pdo->commit();
}else
{
    //更新失败
    $pdo->rollback();  //回滚事物
}

//注意使用事物之后需要注意以下几点:
//1.要实现事务处理数据表的存储引擎必须是InnoDB引擎
//2.事物必须完整(也就是 开启->提交)
*/

//以上就是PDO中的事物处理

 

 

 

 

 


?>


声明:禁止任何非法用途使用,凡因违规使用而引起的任何法律纠纷,本站概不负责。

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

精彩评论

全部回复12人评论7,777人参与