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 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料
  • ¥15 使用R语言marginaleffects包进行边际效应图绘制