事务预处理同时应用

事务预处理同时应用

$insert = array(
   ':name' => $p_name,
   ':number' => $p_number,
   ':email' => $p_email,
   ':money' => $p_money,
   ':info' => $p_info,
   ':face' => $p_face
);

$pdo->beginTransaction(); //!开启事务

$sql = "INSERT transfer(name,number,email,money,info,face) value(:name,:number,:email,:money,:info,:face)";

foreach($insert as $key=>$value){
$stmt->bindParam(":name", $p_name);
$stmt->bindParam(":number", $p_number);
$stmt->bindParam(":email", $p_email);
$stmt->bindParam(":money", $p_money);
$stmt->bindParam(":info", $p_info);
$stmt->bindParam(":face", $p_face);
}

$reslut=$stmt->execute($sql);

$r1 =$stmt->rowCount();
if($r1>0 ){  //行数大于0即都执行成功
   $pdo->commit(); //!事务提交
   echo "操作成功";
}else{
   $pdo->rollBack(); //!事务回滚
   echo "操作失败";
}

$pdo->setAttribute(PDO::ATTR_AUTOCOMMIT,1);

---

事件和预处理是否可同时应用,bindParam 绑定多个参数,能否用foreach这样去设置

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
guly 2018-01-30 11:25:16

你好,事件和预处理是可以同时应用的,bindParam 绑定 foreach循环绑定具体参考例子如下:

绑定的数据:

$insert=Array(   
 Array (      
   'name'  => "qaz",    
   'number'=> 111111,  
    'email' => "827215772@qq.com" ,  
   'money' => 222,    
   'info' => 'qwqwqwq',  
      ),   
Array (     
  'name'  => "qaz_3",   
'number'=> 111113,  
'email' => "827215772@qq.com" ,  
'money' => 2223,   
'info' => 'qwqwqwq3',   
),
);
$pdo=new PDO('mysql:host=localhost;dbname=user_money','root','root');
$pdo->exec('set names utf8');
$stmt = $pdo->prepare("INSERT transfer(name,number,email,money,info) 
value(:name,:number,:email,:money,:info)");
foreach($insert as $key=>$value){
    $stmt->bindParam(":name", $value['name']);
    $stmt->bindParam(":number", $value['number']);
    $stmt->bindParam(":email", $value['email']);
    $stmt->bindParam(":money", $value['money']);
    $stmt->bindParam(":info", $value['info']);
    $stmt->execute();//注意提交数据时是二维数组是的循环每循环一次执行一起提交,应写在循环里面
}
$r1 =$stmt->rowCount();
if($r1>0 ){  //行数大于0即都执行成功
    $pdo->commit(); //!事务提交
    echo "操作成功";
}else{
    $pdo->rollBack(); //!事务回滚
    echo "操作失败";
}
$pdo->setAttribute(PDO::ATTR_AUTOCOMMIT,1);
die();

如果解决您的问题请采纳,祝学习愉快!

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师