PDO安全事务处理
来源:互联网 发布:xbox one 手柄 mac 编辑:程序博客网 时间:2024/04/29 11:58
PDO安全处理与事务处理
1. PDO异常处理
PDO异常处理介绍:
- PDO::ATTR_ERRMODE://不报错(忽略)(0)
- PDO::ERRMODE_WARNING: //以警告的方式报错(1)
- PDO::ERRMODE_EXCEPTION://以异常处理方式报错(2)
举例:
<?php// 默认不提示错误信息,需要用errorCode(), errorInfo()try{ $pdo = new PDO("mysql:host=localhost; dbname=myapp", "root",""); }catch (PDOException $e){ die('Connection failed:'.$e->getMessage());}$sql = "INSERT INTO users(name, age) VALUES ('xy', 11)";$res = $pdo->exec($sql);if($res){ echo "sucess";}else{ //打印错误信息 echo $pdo->errorInfo(); print_r($pdo->errorInfo());}
设置错误报警:
<?php// 默认不提示错误信息,需要用errorCode(), errorInfo()try{ $pdo = new PDO("mysql:host=localhost; dbname=myapp", "root",""); //设置错误报警模式 $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);//或者1}catch (PDOException $e){ die('Connection failed:'.$e->getMessage());}$sql = "INSERT INTO users(name, age) VALUES ('xy', 11)";$res = $pdo->exec($sql);if($res){ echo "sucess";}else{}
设置异常信息模式:
<?php// 默认不提示错误信息,需要用errorCode(), errorInfo()try{ $pdo = new PDO("mysql:host=localhost; dbname=myapp", "root",""); //设置成异常信息 $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);}catch (PDOException $e){ die('Connection failed:'.$e->getMessage());}$sql = "INSERT INTO users(name, age) VALUES ('xy', 11)";try{ }catch (PDOException $e){ echo $e->getMessage();}
2. PDO预处理
PDO预处理方法:
- prepare() // 用于执行查询SQL语句,返回PDOStatement对象
- bindValue() //将值绑定到对应的一个参数,返回布尔值
- bindParam() // 将参数绑定到相应的查询占位符上,返回布尔值
- bindColumn() // 用来匹配列名和一个指定的变量名
- execute() // 执行一个准备好了的预处理语句,返回布尔值
- rowCount() // 返回使用增,删,改,查操作语句后受影响的行总数。
绑定方法:
?式的绑定方法:
<?php/* * ?式的预处理语句,共有三种绑定方式 *///1.连接数据库try{ $pdo = new PDO("mysql:host=localhost; dbname=myapp", "root","");}catch (PDOException $e){ die('Connection failed:'.$e->getMessage());}//print_r($pdo);//2. 预处理的SQL语句$sql = "INSERT INTO users(id, name, age) VALUES (?,?,?)";//执行预处理语句$stmt = $pdo->prepare($sql);//3. 参数绑定的三种方法// i;(?式的绑定方式)$stmt->bindValue(1, null);$stmt->bindValue(2,'xyz');$stmt->bindValue(3, 33);// ii;(变量绑定方式)$stmt->bindParam(1,$id);$stmt->bindParam(2,$name);$stmt->bindParam(3,$age);$id = null;$name = 'xxx';$age = 24;// iii: 数组方式绑定$stmt->execute(array(null, 'zzz', 22));//4. 执行$stmt->execute();echo $stmt->rowCount();
别名的预处理方式:
<?php/* * 别名式的预处理语句,共有三种绑定方式 *///1.连接数据库try{ $pdo = new PDO("mysql:host=localhost; dbname=myapp", "root","");}catch (PDOException $e){ die('Connection failed:'.$e->getMessage());}//print_r($pdo);//2. 预处理的SQL语句$sql = "INSERT INTO users(id, name, age) VALUES (:id,:name,:age)";//执行预处理语句$stmt = $pdo->prepare($sql);//3. 参数绑定的三种方法// i;(?式的绑定方式)$stmt->bindValue("id", null);$stmt->bindValue("name",'xxyz');$stmt->bindValue("age", 33);//4. 执行$stmt->execute();// ii;(变量绑定方式)$stmt->bindParam("id",$id);$stmt->bindParam("name",$name);$stmt->bindParam("age",$age);$id = null;$name = 'xxxs';$age = 24;//4. 执行$stmt->execute();// iii: 数组方式绑定//$stmt->execute(array(null, 'zzzz', 22));$stmt->execute(array("id"=>null, "name"=>'zzzz',"age"=> 22));echo $stmt->rowCount();
预处理的查询:
<?php/* * 采用预处理SQL执行查询,并采用绑定结果方式输出 *///1.连接数据库try{ $pdo = new PDO("mysql:host=localhost; dbname=myapp", "root","");}catch (PDOException $e){ die('Connection failed:'.$e->getMessage());}//print_r($pdo);//2. 预处理的SQL语句$sql = "SELECT id,name,age FROM users ";//执行预处理语句$stmt = $pdo->prepare($sql);//3. 执行$stmt->execute();//$stmt->bindColumn(1, $id);$stmt->bindColumn(2, $name);$stmt->bindColumn("age", $age);while($val=$stmt->fetch(PDO::FETCH_COLUMN)){ echo "{$id}:{$name}:{$age}<br>";}//foreach($stmt as $val){// echo $val['id'].'...'.$val['name'].'...'.$val['age'].'<br>';//}
3. PDO事务处理
数据表需要InnoDB类型
事务处理操作方法:
- beginTransation() // 开启一个事务(做一个回滚点)
- commit() // 提交事务
- rollBack() // 事务回滚操作
<?php// 采用预处理+事务处理执行SQL操作//1.连接数据库try{ $pdo = new PDO("mysql:host=localhost; dbname=myapp", "root",""); $pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);}catch (PDOException $e){ die('Connection failed:'.$e->getMessage());}print_r($pdo);//执行数据操作try{ //开启事务; $pdo->beginTransaction(); $sql = "INSERT INTO users(id, name, age) VALUES (?,?,?)"; $stmt = $pdo->prepare($sql); //传入参数 $stmt->execute(array(1,'xxxxu',22)); $stmt->execute(array(null,'zu',22)); $stmt->execute(array(null,'zxxxu',22)); //提交事务 $pdo->commit();}catch (PDOException $e){ die("fail to exec".$e->getMessage()); $pdo->rollBack();
0 0
- PDO安全事务处理
- PDO事务处理
- PDO事务处理
- PDO事务处理
- PDO 的事务处理
- PDO 的事务处理
- 4. PDO 事务处理
- pdo中的事务处理
- PDO事务处理预处理
- PDO 的事务处理
- PDO中的事务处理
- 面向对象,PDO基础知识,PDO预处理,SQL事务处理
- php中的pdo操作mysql事务处理实例
- PHP中PDO的MYSQL事务处理实例
- PHP中PDO的MYSQL事务处理实例
- pdo错误处理模式与事务处理
- php事务处理mysql与PDO实例
- PDO捕获SQL语句、PDO中错误处理与PDO事务处理
- Leetcode49 Anagrams
- 计算机科学运用
- easyui的datagrid使用以及分页
- OC中对象的动态编译机制
- lucene搜索引擎的初级使用
- PDO安全事务处理
- Mysql常用函数
- 单件模式的经典代码
- sql语句优化技巧
- angularjs初学笔记
- Good keylogger
- 壁纸 - 精选海量高清图片与桌面背景
- NYOJ--31 5个数求最值
- 关于MVC的进一步学习