PHP的预编译的使用

在PHP中,使用预编译不仅可以简化代码,还可以防止有些数据的泄露

 ?php
 * 我直接针对PDO的封装类
 * User: seven
 * Date: 2017/7/26
 * Time: 9:43
class MyPDO
 /** 访问数据库的PDO对象 */
 protected $pdo;
 * 当前类的构造函数
 * 读取数据库配置信息文件,并初始化PDO对象
 function __construct()
 if(file_exists(‘db.ini‘)){
 $arr = parse_ini_file(‘db.ini‘);
 }else{
 exit(‘没有找到对应的数据库配置文件信息 ...‘);
 $dsn = "{$arr[‘dbms‘]}:dbname={$arr[‘dbname‘]};host={$arr[‘host‘]};port={$arr[‘port‘]};charset={$arr[‘charset‘]}";
 $user = $arr[‘user‘];
 $password = $arr[‘password‘];
 $this- pdo = new PDO($dsn,$user,$password);
 * 销毁自己的操作类时,同时销毁被创建了的PDO对象
 function __destruct()
 $this- pdo = null;
 * 执行DML操作语句
 * @param $sql 需要执行的SQL语句
 * @return int 返回执行语句后受到影响的行数
 public function pdoExec($sql){
 return $this- pdo- exec($sql);
 * 返回结果为数组结构
 * @param $sql 需要执行的SQL语句
 * @param int $var 执行query函数的参数(可选值:PDO::FETCH_BOTH(默认),PDO::FETCH_NUM,PDO::FETCH_ASSOC)
 * @return array 将结果转换为数组并返回,如果没有查询结果则返回一个空数组
 public function arrayByPdoQuery($sql, $var=PDO::FETCH_BOTH){
 $ps = $this- pdo- query($sql, $var);
 if($ps)
 return $ps- fetchAll();
 return array();
 * 获取查询结果并封装为一个对象数组
 * @param $sql 需要执行的SQL语句
 * @param string $class_name 创建类的名称
 * @param array $ctor_args 此数组的元素被传递给对应类的构造函数
 * @return array 返回组装好的对象数组
 public function objectByPdoQuery($sql, $class_name=‘stdClass‘, $ctor_args=array()){
 $ps = $this- pdo- query($sql);
 $arr = array();
 if($ps){
 while ($obj = $ps- fetchObject($class_name, $ctor_args)){
 array_push($arr, $obj);
 return $arr;
 * 使用PDO预编译语句执行DML操作并返回受影响的行数
 * @param $sql 需要执行的SQL语句(预编译语句写法)
 * @param array $arr 预编译语句需要添加的数据值,数组结构
 * @return int 返回DML执行后受影响的行数
 public function intByPdoPrepare($sql, array $arr=array()){
 $ps =$this- pdo- prepare($sql);
 $ps- execute($arr);
 return $ps- rowCount();
 * 使用PDO预编译语句执行查询操作并返回结果集合
 * @param $sql 需要执行的SQL语句(预编译语句写法)
 * @param array $arr 预编译语句需要添加的数据值,数组结构
 * @return array 转换为数组结构的返回值结果
 public function arrayByPdoPrepare($sql, array $arr=array()){
 $ps =$this- pdo- prepare($sql);
 $ps- execute($arr);
 if($ps)
 return $ps- fetchAll();
 return array();
 * 获取查询结果并封装为一个对象数组
 * @param $sql 需要执行的SQL语句
 * @param array $arr 预编译语句需要添加的数据值,数组结构
 * @param string $class_name 创建类的名称
 * @param array $ctor_args 此数组的元素被传递给对应类的构造函数
 * @return array 返回组装好的对象数组
 public function objectByPdoPrepare($sql, array $arr=array(), $class_name=‘stdClass‘, $ctor_args=array()){
 $ps =$this- pdo- prepare($sql);
 $ps- execute($arr);
 $arr = array();
 if($ps){
 while ($obj = $ps- fetchObject($class_name, $ctor_args)){
 array_push($arr, $obj);
 return $arr;
//include_once ‘Student.class.php‘;
//$mp = new MyPDO();
//$arr = $mp- arrayByPdoQuery(‘select * from students‘, PDO::FETCH_NUM);
//var_dump($arr);
//$arr = $mp- objectByPdoQuery(‘select * from student‘, ‘Student‘);
//var_dump($arr[0]);
//$mp- arrayByPdoPrepare(‘select * from student‘, ‘test‘);

//$sql = "select * from student where ssex=‘$sex‘"; //$arr = $mp- objectByPdoQuery($sql, ‘Student‘); //var_dump($arr); $sql = "insert into student values (null,?,?,?,?,?,?)"; $params = array( ‘王和河‘,‘男‘,‘1992-05-23‘,‘四川省成都市‘,‘13087654321‘,‘66668888‘ $num = $mp- intByPdoPrepare($sql, $params); echo $num.‘ br $sql = "select * from student where ssex=?"; $arr = $mp- objectByPdoPrepare($sql,array($sex),‘Student‘); var_dump($arr);

PHP的预编译的使用

原文地址:http://www.cnblogs.com/scmy707248119-/p/7263970.html

最新回复 (0)
Google XML地图 百度 XML地图 Google txt地图 百度 txt地图 17社