u010518455 2016-05-26 10:02 采纳率: 0%
浏览 1326

请教 自己写的mysqli 操作数据库的类 DB.class.php

类是这样写的:

<?php

class DB{

   //属性
   private $host;
   private $port;
   private $name;
   private $pass;
   private $dbname;
   private $prefix; //设置表前缀
   private $charset;//设置字符集
   private $mysqli; //设置mysqli类对象

   //设置构造函数
   public function __construct($arr=array()){

       $host=isset($arr['host']) ? $arr['host'] : 'localhost';
       $port=isset($arr['port']) ? $arr['port'] : '3306';
       $name=isset($arr['name']) ? $arr['name'] : 'root';
       $pass=isset($arr['pass']) ? $arr['pass'] : 'root';
       $dbname=isset($arr['dbname']) ? $arr['dbname'] : 'mydatabase';
       $prefix=isset($arr['prefix']) ? $arr['prefix'] : '';
       $charset=isset($arr['charset']) ? $arr['charset'] : 'utf8';


       //连接数据库
       $this->connect();

       //设置字符集
       $this->setCharset();


   }
   //连接数据库
   private function connect(){
       $this->mysqli = new mysqli($this->host,$this->name,$this->pass,$this->dbname);
       if(!$this->mysqli){
           //如果结果出错了 暴力处理 在实际生产过程中 应写入错误日志中
           echo '数据库连接错误.<br/>';
           echo '错误编号'.$this->mysqli->connect_errno,'<br/>';
           echo '错误内容'.$this->mysqli->connect_error,'<br/>';
           exit;
       }

   }



   //设置字符集
   private function setCharset(){

       $this->db_query("set names {$this->charset}");
   }

   //插入数据
   public function db_insert($sql){
       $this->db_query($sql);

       return $this->mysqli->affected_rows ? $this->mysqli->insert_id : false;
   }

   //删除数据

   public function db_delete($sql){
       $this->db_query($sql);
       return $this->mysqli->affected_rows ? $this->mysqli->affected_rows : false;

   }
   //更新数据

   public function db_update($sql){
       $this->db_query($sql);
       return $this->mysqli->affected_rows ? $this->mysqli->affected_rows : false;

   }

   //查询一条数据

   public function db_getRow($sql){
       $res=$this->db_query($sql);

       return $res->num_rows ? $res->fetch_assoc() : false;

   }

   //查询多条数据

   public function db_getAll($sql){
       $res=$this->db_query($sql);
       if($res->num_rows){
       $list=array();
       while($row=$res->fetch_assoc()){
           $list[]=$row;
       }
        return $list;
       }

        return false;

   }

      //$mysqli->query()错误处理
   private function db_query($sql){
       $res=$this->mysqli->query($sql);
       if(!$res){
           echo '语句出现错误<br/>';
           echo '错误编号'.$this->mysqli->errno,'<br/>';
           echo '错误内容'.$this->mysqli->error,'<br/>';
           exit;

       }
       return $res;  
   }

}

 实例化这个类:

 <?php    

function __autoload($a){

   if(is_file("$a.class.php")){
       include_once "$a.class.php";
   }

}

$db=new DB(array());

但是会报错 如图片所示
图片说明

  • 写回答

1条回答 默认 最新

  • devmiao 2016-05-26 12:59
    关注
    评论

报告相同问题?

悬赏问题

  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题