php中通过pdo来操作mysql是很快速方便的,跟原生js代码比那是简单了不少,小编自己整理了一个类,有点乱,但是基本功能都实现了,大家用的话可以自己拿去稍加整理就好,
mySQLHelper类代码:
<?php class mySQLHelper{ //数据库连接信息 private $host='localhost'; //数据库地址 private $dbname='dbname'; //数据库名 private $uid='uid'; //数据库用户名 private $pwd='pwd'; //数据库密码 private $con; function __construct(){ $this->con= new PDO( "mysql:host=".$this->host.";dbname=".$this->dbname, $this->uid,$this->pwd, array(PDO::MYSQL_ATTR_INIT_COMMAND => "set names 'utf8';")); } //返回结果集合,失败返回null(select) public function MyQuery($sql){ $data=$this->con->query($sql); //$data->setFetchMode(PDO::FETCH_ASSOC);//结果集只显示 键值对格式 //$data->setFetchMode(PDO::FETCH_NUM);//结果集只显示 索引格式数据 //以下三个参数不能用于fetchAll() //PDO::CASE_LOWER -- 强制列名是小写 //PDO::CASE_NATURAL -- 列名按照原始的方式 //PDO::CASE_UPPER -- 强制列名为大写 //$data->setFetchMode(PDO::CASE_UPPER); //默认两种方式体现 if($data) return $data->fetchAll(); else return null; } //参数方式执行(insert,delete,update,select),防止SQL注入,可自动处理特殊符号 如:单引号,双引号 public function Prepare($sql,$arr=array()){ $dp=$this->con->prepare($sql); if(is_array($arr)){ for($i=1;$i<=count($arr);$i++){ $dp->bindParam($i,$arr[$i-1]); } } return $dp->execute(); /* 调用方式1,类似索引方式传递参数 $res=$this->con->Prepare( "insert into tb_article(title,auth,pubtime) values(?,?,?)", array( '你"好吗?"', "另一个", time() )); 执行方式1 $dp->bindParam(1,'你好"吗');//从1开始 $dp->bindParam(2,'沈从文'); 调用方式2 键值方式传递参数 $res=$this->con->Prepare( "insert into tb_article(title,auth,pubtime) values(:title,:auth,:time)", array( '你"好吗?"', "另一个", time() )); 执行方式1 $dp->bindParam(':title','你好"吗');// */ } //返回最新ID的参数化方法(如:insert) public function ZhiXing($sql,$arr=array()){ $dp=$this->con->prepare($sql); if(is_array($arr)){ for($i=1;$i<=count($arr);$i++){ $dp->bindParam($i,$arr[$i-1]); } } $dp->execute(); return $this->con->lastInsertId(); } //返回受影响行数(insert,delete,update) public function Excute($sql){ $rows=$this->con->exec($sql); return $rows; } //插入记录返回最新自增字段值 public function ExcuteKey($sql){ $this->con->exec($sql); return $this->con->lastInsertId(); } //满足条件数量统计(select count(*) ... ) public function RowsCount($sql){ $data=$this->con->query($sql); return $data->fetchColumn(); } //根据记录总数获取总分页数 public function getTotalPage($totalcount,$pagesize){ if($totalcount<1){return 0;} if($totalcount%$pagesize==0){ $totalpage=$totalcount/$pagesize; }else{ $totalpage=($totalcount-($totalcount%$pagesize))/$pagesize+1; } return $totalpage; } //获取分页代码 public function getPageHtml($currentpage,$totalcount,$pagesize=25,$sql){ $pagerange=3; //分页宽度 $totalpage=0; //总页数 // x条记录 << 5 >> 共y页 if($totalcount<=$pagesize){ return "<a class='thispage'>$totalcount 条记录</a>"; } //总页数 if($totalcount%$pagesize==0){ $totalpage=$totalcount/$pagesize; }else{ $totalpage=($totalcount-($totalcount%$pagesize))/$pagesize+1; } $startpage=$currentpage-$pagerange>0?$currentpage-$pagerange:1; $endpage=$currentpage+$pagerange<$totalpage?$currentpage+$pagerange:$totalpage; //头部 $page='<a>'.$totalcount.'条记录</a>'; //当前分页前 for($i=$startpage;$i<$currentpage;$i++){ if($sql==''){ $page.="<a href='?p=$i'>$i</a>"; }else{ $page.="<a href='$sql&p=$i'>$i</a>"; } } //当前分页 $page.='<a class="thispage">'.$currentpage.'</a>'; //当前分页后 for($i=$currentpage+1;$i<=$endpage;$i++){ if($sql==''){ $page.="<a href='?p=$i'>$i</a>"; }else{ $page.="<a href='$sql&p=$i'>$i</a>"; } } //总页数 $page.='<a>共'.$totalpage.'页</a>'; return '<div class="pages">'.$page.'</div>'; } } ?>
使用方法举例,新增一条记录,参数化执行,忽略单双引号等
require('../include/pdo.mysql.class.php'); $con=new mySQLHelper; $tjshijian=time(); $res=$con->ZhiXing("insert into tb_mytable(uname,tell,tjshijian,ip,remark) value(?,?,?,?,?)", array( '小芳','18222222222', $tjshijian,'115.29.226.56','你"好吗?"' ));
当然,前提是你的php要开启pdo_mysql扩展。