pdo

<?php

exec(“set names utf8″);
//pdo写
//$sql=”insert into me_money(money) values(‘200’)”;
//if(!$pdo->exec($sql)){
// echo “添加失败,请重新添加”.$pdo->errorInfo();
//}
pdo读
//$sql=”select * from me_money “;
//$map=$pdo->query($sql);
//$map->setFetchMode(PDO::FETCH_ASSOC);
//$row=$map->fetchAll();

/*********mysql事务处理****************/
//mysql_connect(“127.0.0.1″,”root”,”root”);
//mysql_select_db(“shop”);
//mysql_query(‘set names utf8’);
//mysql_query(“BEGIN”);//开启
//$sql=”update me_money set money=money-200 where cid=1″;
//$sq2=”update me_money set money=money+200 where cid=2″;
//mysql_query($sql);
//$res1=mysql_affected_rows();
//mysql_query($sq2);
//$res2=mysql_affected_rows();
//if($res1&&$res2){
// mysql_query(“COMMIT”);
// echo “提交成功”;
//}else{
// mysql_query(“ROLLBACK”);
// echo “数据回滚”;
//}
/*********pdo的预处理 ****************/
$pdo=new PDO(“mysql:host=localhost;dbname=shop”,”root”,”root”);
$pdo->exec(“set names utf8″);
//$sql=”select * from me_money where cid=?”;//查询索引数组
$sql=”select * from me_money where cid=:cid and money>:money”;//查询关联数组
$data=$pdo->prepare($sql);//预防sql
//$data->execute(array(1));
$sql_array = array(
‘:cid’ => 1,
‘:money’ => 1,
);
//方式1,通传递的方法来实现查询。
$data->execute($sql_array);
//方式2,通过绑定的方式进行查询。
$cid=1;$money=1000;
$data->bindParam(‘cid’,$cid);
$data->bindParam(‘money’,$money);
$arr=$data->fetchAll(PDO::FETCH_ASSOC);
//SQL注入
//$pdo=new PDO(“mysql:host=localhost;dbname=shop”,”root”,”root”);
//$pdo->exec(“set names utf8″);
//$sql=”select * from nav where nav_name=:nav_name”;
//$data=$pdo->prepare($sql);
$sql_array=array(
‘nav_name’=>’首页’ or ‘1’=’1′,
)
//$data->execute([‘nav_name’=>”首页 or ‘1’=’1′”]);
//$arr=$data->fetchAll(PDO::FETCH_ASSOC);
/***********pdo事务处理*************/
$money=$_POST[‘money1’];
$name2=$_POST[‘username’];
$name=3;
$name2=2;
try{
$pdo=new PDO(“mysql:host=localhost;dbname=shop”,”root”,”root”);
$pdo->exec(“set names utf8”);
$pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);//设置异常处理模式
$pdo->setAttribute(PDO::ATTR_AUTOCOMMIT,0);//关闭自动提交
}catch(PDOException $e){
echo “数据库连接失败”;
exit;
}
try {
$pdo->beginTransaction(); // 开启一个事务
$sql1=”update me_money set money=money-$money where uid=$name”;
// $preObj1=$pdo->prepare($sql1);
// $affected_rows1=$preObj1->execute(array(“$money”, $name));
$affected_rows1=$pdo->exec($sql1);
$sql2=”update me_money set money=money+$money where uid=$name2″;
// $preObj2=$pdo->prepare($sql2);//预防sql
// $affected_rows2=$preObj2->execute(array(“$money”, $name2));
$affected_rows2=$pdo->exec($sql2);
if(!$affected_rows1)
throw new PDOException(“账号存在异常,转账失败,请重新选择”);
if(!$affected_rows2)
throw new PDOException(“对方账号存在异常,收账失败”);
echo “操作成功”;
$pdo->commit();//如果执行到此处前面两个更新sql语句执行成功,整个事务执行成功
} catch (PDOException $e) {
echo “操作失败:”.$e->getMessage();
$pdo->rollback();//执行事务中的语句出了问题,整个事务全部撤销
}
$pdo->setAttribute(PDO::ATTR_AUTOCOMMIT,1);
//测试是否成功
echo “\n操作结果为:\n”;
$sql=”select money from me_money where uid=?”;
$preObj = $pdo->prepare($sql);
$preObj->execute(array($name));
$arr = $preObj->fetchAll(PDO::FETCH_ASSOC);
foreach($arr as $v)
{
echo “转账后金额为:”.$v[‘money’].”\n”;
}
?>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值