连接数据库,分页类,插入类,删除类,导出类,导入类,计数类的编写

<?php
/**
 *  qq:731611736
 * @author prince
 * @copyright  copyright (c) 2003-2014  
 * @version  $Id:Db.class.php  2014-9-21  上午10:59:12
 */
class Db{
private $host = 'localhost';
private $user = 'root';
private $dbname = 'db';
private $pass = '';
private $cs = 'utf8';
private $tp = 'hnsthm_';
private $m = null;
private $css = <<<e
    <style>
.page a{
    text-decoration:none;
    font-size:12px;
    border:1px solid gray;
    border-radius:4px;
    display:block;
    padding:5px;
    min-width:15px;
    float:left;
    text-align:center;
    margin:0 5px;
}
.page a:hover{
    border:1px solid red;
        border-radius:4px;
}


.page span{
    font-size:12px;
        border-radius:4px;
    border:1px solid gray;
    display:block;
    padding:5px;
    min-width:15px;
    font-weight:800;
    float:left;
    text-align:center;
 }
</style>
e;
public function __construct($host = 'localhost', $user = 'root', $pass = '', $dbname = 'db', $cs = 'utf8', $tp = '') {
$this->host = $host;
$this->user = $user;
$this->pass = $pass;
$this->dbname = $dbname;
$this->cs = $cs;
$dsn = "mysql:host=$host;dbname=$dbname";
$this->tp = $tp;
$opt = array (
1002 => "set names $cs"
);
try {
$this->m = new PDO ( $dsn, $user, $pass, $opt );
} catch ( Exception $e ) {
exit ( '数据库连接失败,请检查...' );
}
}
public function page($t, $ps = 5, $p = 1, $f = '*', $w = '1=1', $o = '') {
$table = $this->tp.$t;
$recordcount = $this->count($t,$w);
$pagecount = ceil ( $recordcount / $ps );
$p = $p < 1 ? 1 : $p;
$p = $p > $pagecount ? $pagecount : $p;
$start = ($p - 1) * $ps;
$stmt = $this->m->prepare ( "select $f from $t where $w $o limit $start,$ps" );
$stmt->execute ();
$rs = $stmt->fetchAll ( 3 );
$stmt->closeCursor ();


$info = $this->css . '<div class=page>';
if ($p > 1) {
$info .= sprintf ( "<a href='?p=%d'>上一页</a>&nbsp;", $p - 1 );
}


$ss = 1;
$ee = 10;
if ($p > 6) {
$ss = $p - 5;
$ee = $ss + 9;
}


if ($pagecount < $ee) {
$ee = $pagecount;
} else if ($ee >= $pagecount) {
$ee = $pagecount;
$ss = $ee - 9;
}
for($n = $ss; $n <= $ee; $n ++) {
if ($n == $p) {
$info .= sprintf ( "<span>%d</span>", $n );
continue;
}
$info .= sprintf ( "<a href='?p=%d'>%d</a>&nbsp;", $n, $n );
}
if ($p < $pagecount) {
$info .= sprintf ( "<a href='?p=%d'>下一页</a>&nbsp;", $p + 1 );
}
$info .= '</div>';
return array (
$rs,
$info,
$p,
$ps,
$recordcount
);
}
public function save($tn, $data) {
$table = $this->tp . $tn;
foreach ( $data as $k => $v ) {
$key [] = $k;
$keys [] = ':' . $k;
}
$k = implode ( ',', $key );
$v = implode ( ',', $keys );
$sql = "insert into $table($k) values($v)";


$stmt = $this->m->prepare ( $sql );
$stmt->execute ( $data );
$stmt->closeCursor ();
}
public function delete($tn, $where = '1=1') {
$table = $this->tp . $tn;
$sql = "delete from $table where $where";
$this->m->exec ( $sql );
}
public function update($tn, $where='1=1', $data) {
$table = $this->tp . $tn;
foreach ( $data as $k => $v ) {
$key [] = $k.'=:'.$k;
}
$k = implode ( ',', $key );
$sql = "update $table set $k where $where";
$stmt = $this->m->prepare ( $sql );
$stmt->execute ( $data );
$stmt->closeCursor ();
}
public function __destruct() {
unset ( $this->m );
}


public function load($fn=null){
$fn = empty($fn) ? dirname(__FILE__).'/db.sql' : $fn;
$sql = file_get_contents($fn);
$sqls = explode(";\r\n",$sql);
foreach($sqls as $v){
  $this->exec($v);
}


}


public function backup($fn=null){
$fn = empty($fn) ? dirname(__FILE__).'/db'.date('YmdHis').'.sql' : $fn;


$result = $this->m->query('show tables');
$rs = $result->fetchAll(PDO::FETCH_NUM);
$ddd = '';
foreach($rs as $v){
$ddd.="\r\n\r\n/* $v[0] */\r\n";
            $r = $this->m->query('show create table '.$v[0]);
            $rrr = $r->fetchAll(PDO::FETCH_NUM);
            $ddd.=$rrr[0][1].";\r\n";
            $trs = $this->m->query("select * from $v[0]");
            $tr = $trs->fetchAll(PDO::FETCH_ASSOC);
            $data = array();
            foreach($tr as $tv){
            $val = '';
            foreach($tv as $k=>$v2){
            $val[]="'$v2'";
            }
            $data[] = "(". implode(',',$val) .")";
            }
            if(count($data)>0){
            $d = implode(',',$data);
            $ddd.="insert into `$v[0]` values ".$d.";\r\n\r\n\r\n";
            }
}
$ds = <<<sql


/*!40101 SET NAMES $this->cs */;


/*!40101 SET SQL_MODE=''*/;


/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/`$this->dbname` /*!40100 DEFAULT CHARACTER SET $this->cs */;


USE `$this->dbname`;


$ddd


/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;


sql;
file_put_contents($fn, $ds);


}


public function exec($s){
if(trim($s)==''){


}else{
        $this->m->exec($s);
}
}




public function count($t,$where='1=1'){
$table = $this->tp.$t;
$sql = "select count(*) from $table where $where";
$r = $this->m->query ( $sql );
$recordcount = $r->fetchColumn ();
return $recordcount;




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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值