doujumiao5024 2015-03-28 19:48
浏览 52
已采纳

OOP MySQLi Connect

Im newbie in OOP. I have class Database

class Database{
private $host;
private $user;
private $pass;
private $db;
public $mysqli;

function db_connect(){
    $this->host = 'localhost';
    $this->user = 'root';
    $this->pass = '';
    $this->db = 'db';

    $this->mysqli = new mysqli($this->host, $this->user, $this->pass, $this->db);
    return $this->mysqli;
}

Inside class Database i have function db_num

function db_num($sql){
    $num = mysqli_num_rows(mysqli_query($this->mysqli,"{$sql}"));
    return $num;
}

But it cant connect to database when im using in con argument $this->mysqli

  • 写回答

1条回答 默认 最新

  • dongzhuoxie1244 2015-03-28 19:54
    关注

    It is bad practice to mix mysqli object style and procedural style.

    Try this:

    function db_num($sql){
        $result = $this->mysqli->query($sql);
        return $result->num_rows;
    }
    

    Be sure to connect to the database before you call db_num(), e.g.:

    $db = new Database();
    $db->db_connect();
    $db->db_num("SELECT fields FROM YourTable");
    

    A cleaner way in my opinion would be to call db_connect inside the constructor:

    class Database{
      private $host;
      private $user;
      private $pass;
      private $db;
      public $mysqli;
    
      public function __construct() {
        $this->db_connect();
      }
    
      private function db_connect(){
        $this->host = 'localhost';
        $this->user = 'root';
        $this->pass = '';
        $this->db = 'db';
    
        $this->mysqli = new mysqli($this->host, $this->user, $this->pass, $this->db);
        return $this->mysqli;
      }
    
      public function db_num($sql){
            $result = $this->mysqli->query($sql);
            return $result->num_rows;
      }
    }
    
    $db = new Database();
    $db->db_num("SELECT fields FROM YourTable");
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示
  • ¥15 求三国群英传pl国战时间的修改方法
  • ¥15 matlab代码代写,需写出详细代码,代价私
  • ¥15 ROS系统搭建请教(跨境电商用途)
  • ¥15 AIC3204的示例代码有吗,想用AIC3204测量血氧,找不到相关的代码。