php PDO学习笔记

1.POD简介

PDO是php访问数据库的接口,PDO 提供了一个数据访问抽象层。可以使用多种数据库,多种数据库可以使用相同的函数或方法访问数据。

2.开启PDO

编辑 php.ini 文件,开启extension=php_pdo.dll扩展,开启对应的数据库扩展,比如:mysql数据库开启;extension=php_pdo_mssql.dll ;extension=php_pdo_mysql.dll扩展。

3.使用PDO连接mysql数据库

<?php
try{
	//第一个参数为驱动,mysql是你对应的数据库类型,
	//host=localhost对应数据库主机名
	//dbname=podtest对应使用的数据库
	//root对应数据库用户名
	//""对应的密码
	$pdo=new PDO("mysql:host=localhost;dbname=podtest;","root","");
}catch(PDOException $e){
	die("数据库连接失败".$e->getMessage());
}
?>

4.PDO预定义常量

PHP PDO预定义常量 | 菜鸟教程 (runoob.com)

5.PDO预处理语句

用预处理语句进行重复插入

下面例子通过用 name 和 value 取代 ? 占位符的位置来执行一条插入查询。

<?php
//导入连接数据库
include("pdo.php");
try{
	//数据添加预处理语句
	$sql="insert into pod_student(name,sex,age,classid) value(?,?,?,?)";
	$stmt=$pdo->prepare($sql);
	//绑定参数 PDOStatement::bindParam — 绑定一个参数到指定的变量名(PHP 5 >= 5.1.0, PECL pdo >= 0.1.0)
	$stmt->bindParam(1,$name);
	$stmt->bindParam(2,$sex);
	$stmt->bindParam(3,$age);
	$stmt->bindParam(4,$classid);
	//赋予数据
	$name='name11';
	$sex='w';
	$age=16;
	$classid=4;
	//添加数据
	$ret=$stmt->execute();
	//查看是否成功
	var_dump($ret);
	//赋予数据2
	$name='name12';
	$sex='v';
	$age=17;
	$classid=5;
	//添加数据2
	$ret=$stmt->execute();
	//查看是否成功
	var_dump($ret);

    //使用数组的方式
	$stmt->execute(array('name13','w',23,3));
	//查看是否成功
	var_dump($ret);
	
	
}catch(PDOException $e){
	echo $e->getMessage();
}

?>

用预处理语句进行重复插入

下面例子通过用 name 和 value 替代相应的命名占位符来执行一个插入查询

<?php
//导入连接数据库
include("pdo.php");
try{
	//数据添加预处理语句
	$sql="insert into pod_student(name,sex,age,classid) value(:name,:sex,:age,:classid)";
	$stmt=$pdo->prepare($sql);
	//绑定参数
    //PDOStatement::bindParam — 绑定一个参数到指定的变量名(PHP 5 >= 5.1.0, PECL pdo >= 0.1.0)
	$stmt->bindParam(":name",$name);
	$stmt->bindParam(":sex",$sex);
	$stmt->bindParam(":age",$age);
	$stmt->bindParam(":classid",$classid);
	//赋予数据
	$name='name11';
	$sex='w';
	$age=16;
	$classid=4;
	//添加数据
	$ret=$stmt->execute();
	//查看是否成功
	var_dump($ret);
	//赋予数据2
	$name='name12';
	$sex='v';
	$age=17;
	$classid=5;
	//添加数据2
	$ret=$stmt->execute();
	//查看是否成功
	var_dump($ret);
	
	//使用数组的方式
	$arr=array("name"=>"name13","sex"=>"w","age"=>15,"classid"=>1);
	$ret=$stmt->execute();
	//查看是否成功
	var_dump($ret);
	
}catch(PDOException $e){
	echo $e->getMessage();
}

?>

用预处理查询数据

<?php
//导入连接数据库
include("pdo.php");
try{
	//数据查询id大于某个值预处理语句
	$sql="select * from pod_student where id>:id";
	$stmt=$pdo->prepare($sql);
	//获取id
	$stmt->execute($_GET);
	//设置返回为索引数组
	//$user=$stmt->fetch(PDO::FETCH_ASSOC);
	//设置返回为索引数组所有
	//$user=$stmt->fetchAll(PDO::FETCH_ASSOC);
	//输出
	//var_dump($user);
	
	//绑定变量
	//PDOStatement::bindColumn — 绑定一列到一个 PHP 变量(PHP 5 >= 5.1.0, PECL pdo >= 0.1.0)
	$stmt->bindColumn(1,$id);
	$stmt->bindColumn(2,$name);
	$stmt->bindColumn(3,$sex);
	$stmt->bindColumn(4,$age);
	$stmt->bindColumn(5,$classid);
	
	//遍历输出
	while($stmt->fetch(PDO::FETCH_ASSOC)){
		echo "--{$id}--{$name}--{$sex}--{$age}--{$classid}--<br>";
	}
	
	
	
}catch(PDOException $e){
	echo $e->getMessage();
}

?>

6.PDO事物处理

事物处理流程,开启事务,事物处理,处理成功保存,处理失败回滚数据库。

<?php
include("pdo.php");
try{
	//关闭自动提交
	$pdo->setAttribute(PDO::ATTR_AUTOCOMMIT,0);
	//开启事物
	$pdo->beginTransaction();
	//执行子流程
	//子流程失败,则所有事物失败
	//反之成功
	$sql="UPDATE `pdo_one` SET price=price+10 where id=1 ";
	$s=$pdo->exec($sql);
	if(!$s){
		throw new PDOException("进货失败");
	}
	$sql="UPDATE `pdo_one` SET price=price-10 where id=2 ";
	$s=$pdo->exec($sql);
	if(!$s){
		throw new PDOException("出货失败");
	}
	
	//事务成功,提交事务
	$pdo->commit();
	echo '购买成功';
}catch(PDOException $e){
	echo $e->getMessage();
	//事物处理失败,回滚数据库
	$pdo->rollback();
}
?>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程打工仔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值