Using a database class in my user class

前端 未结 6 623
慢半拍i
慢半拍i 2021-02-09 01:00

In my project I have a database class that I use to handle all the MySQL stuff. It connects to a database, runs queries, catches errors and closes the connection.

Now I

6条回答
  •  执念已碎
    2021-02-09 01:39

    I think the better aproach would be to create the database class that instatiate right away on its own on a database.php and then include it on user.php. then every time you create a function that needs a database, you globalise the database object.

    Check this. databse.php

    open_connection();
        $this->magic_quotes_active = get_magic_quotes_gpc();
    $this->real_escape_string_exists = function_exists( "mysql_real_escape_string" );
     }
    
     public function open_connection() {
         $this->connection    = mysql_connect(DBHOST,DBUSER,DBPASS);
         if(!$this->connection){
             die("Could not Connect ".mysql_error());
         }else{
             $db = mysql_select_db(DB,  $this->connection);
         } 
     }
    
     public function close_connection(){
         if(isset($this->connection)){
             mysql_close($this->connection);
             unset($this->connection);
         }
     }
    
     public function query($sql){
         $this->last_query   =   $sql;
         $results            = mysql_query($sql, $this->connection);
         $this->comfirm_query($results);
         return $results;
     }
    
     private function comfirm_query($results){
         if(!$results){
             $output     =   "Query Failed " .mysql_error()."
    "; $output .= "Last Query: " . $this->last_query; die($output); } } public function escape_value($value){ if( $this->real_escape_string_exists ) { if($this->magic_quotes_active ) { $value = stripslashes( $value ); } $value = mysql_real_escape_string( $value ); } else { if( !$this->magic_quotes_active ) { $value = addslashes( $value ); } } return $value; } public function fetch_array($results){ return mysql_fetch_array($results); } public function num_row($results){ return mysql_num_rows($results); } public function insert_id(){ return mysql_insert_id($this->connection); } public function affected_row(){ return mysql_affected_rows(); } } $database = new MysqlDb(); ?>

    here is the user.php

     query($sql);
        $object_array = array();
        while($row = $database -> fetch_array($results)){
            $object_array[] = self::instantiate($row);
        }
        return $object_array;
    }
    
    public static function instantiate($row){
         $user   =   new self;
         foreach($row as $attribute => $value){
             if($user -> has_attribute($attribute)){
                 $user -> $attribute = $value;
             }
         }
         return $user;
    }
    
    private function has_attribute($attribute){
        $object_vars = get_object_vars($this);
        return array_key_exists($attribute, $object_vars);
    
    }
    }
    
    ?>
    

提交回复
热议问题