Connect to MySQL database using PHP OOP concept

℡╲_俬逩灬. 提交于 2021-02-07 19:47:14

问题


I'm writing a class and handful of functions to connect to the database and retrieve the information from the tables. I went through previous posts having similar titles, but most of them have written using mysql functions and I am using mysqli functions.

I want somebody who can go through this simple script and let me know where I am making my mistake.

This is my class.connect.php:

<?php

    class mySQL{
        var $host;
        var $username;
        var $password;
        var $database;
        public $dbc;

        public function connect($set_host, $set_username, $set_password, $set_database)
        {
            $this->host = $set_host;
            $this->username = $set_username;
            $this->password = $set_password;
            $this->database = $set_database;

            $this->dbc = mysqli_connect($this->host, $this->username, $this->password,           $this->database) or die('Error connecting to DB');        
        }

        public function query($sql)
        {
            return mysqli_query($this->dbc, $sql) or die('Error querying the Database');
        }

        public function fetch($sql)
        {        
            $array = mysqli_fetch_array($this->query($sql));          
            return $array;
        }

        public function close()
        {
            return mysqli_close($this->dbc);
        }
    }
    ?>

This is my index.php:

<?php
        require_once ("class.connect.php");

        $connection = new mySQL();

        $connection->connect('localhost', 'myDB', 'joker', 'names_list');
        $myquery = "SELECT * FROM list";
        $query = $connection->query($myquery);        

        while($array = $connection->fetch($query))
        {
            echo $array['first_name'] . '<br />';
            echo $array['last_name'] . '<br />';                
        }

        $connection->close();
?>

I am getting the error saying that Error querying the Database.


回答1:


The problem is either this:

    public function fetch($sql)
    {        
        $array = mysqli_fetch_array($this->query($sql));          
        return $array;
    }

or this:

 while($array = $connection->fetch($query))

Because you are using the result from the query to query again. Basically, you are doing:

$r = mysqli_query($this->dbc, $sql);
$array = mysqli_fetch_array(mysqli_query($this->dbc, $r));

And you are getting an error, because $r is not a query string. When it's converted to a string, it's a "1" (from your other comment).

Try changing the function to (changed name of variable so you can see the difference):

    public function fetch($result)
    {        
        return mysqli_fetch_array($result);
    }

or just call the function directly.




回答2:


Few problems :-

  1. you don't die without provide a proper mysql error (and is good practice to exit gracefully)

  2. fetch method is only FETCH the first row

  3. mysqli have OO method, why you still using procedural function?




回答3:


If you don't do your own db abstraction for learning php and mysql, you can use Medoo (http://medoo.in/).

It's a free and tiny db framework, that could save a huge work and time.




回答4:


Obviously an error occurs on SELECT * FROM list you can use mysqli_error to find the error:

return mysqli_query($this->dbc, $sql) or die('Error:'.mysqli_error($this->dbc));

This will display the exact error message and will help you solve your problem.




回答5:


Try to check this

https://pramodjn2.wordpress.com/

$database = new db();

$query = $database->select(‘user’);

$st = $database->result($query);

print_r($st);

  class db {
                public $server = ‘localhost';
                public $user = ‘root';
                public $passwd = ‘*****';
                public $db_name = ‘DATABASE NAME';
                public $dbCon;

        public function __construct(){
                $this->dbCon = mysqli_connect($this->server, $this->user, $this->passwd, $this->db_name);
        }

        public function __destruct(){
                mysqli_close($this->dbCon);
        }

    /* insert function table name, array value
       $values = array(‘first_name’ => ‘pramod’,’last_name’=> ‘jain’);
    */            
       public function insert($table,$values)
       {
            $sql = “INSERT INTO $table SET “;
               $c=0;
            if(!empty($values)){
                foreach($values as $key=>$val){
                    if($c==0){
                        $sql .= “$key='”.htmlentities($val, ENT_QUOTES).”‘”;
                    }else{
                        $sql .= “, $key='”.htmlentities($val, ENT_QUOTES).”‘”;
                    }
                    $c++;
                }
            }else{
              return false;
            }
            $this->dbCon->query($sql) or die(mysqli_error());
            return mysqli_insert_id($this->dbCon);
     }

     /* update function table name, array value
        $values = array(‘first_name’ => ‘pramod’,’last_name’=> ‘jain’);
        $condition = array(‘id’ =>5,’first_name’ => ‘pramod!’);
     */        
     public function update($table,$values,$condition)
     {
        $sql=”update $table SET “;
        $c=0;
        if(!empty($values)){
            foreach($values as $key=>$val){
                if($c==0){
                    $sql .= “$key='”.htmlentities($val, ENT_QUOTES).”‘”;
                }else{
                    $sql .= “, $key='”.htmlentities($val, ENT_QUOTES).”‘”;
                }
                $c++;
            }
        }
        $k=0;    
        if(!empty($condition)){
            foreach($condition as $key=>$val){
                if($k==0){
                    $sql .= ” WHERE $key='”.htmlentities($val, ENT_QUOTES).”‘”;
                }else{
                    $sql .= ” AND $key='”.htmlentities($val, ENT_QUOTES).”‘”;
                }
                $k++;
            }
        }else{
          return false;
        }
        $result = $this->dbCon->query($sql) or die(mysqli_error());
        return $result;
     }

     /* delete function table name, array value
        $where = array(‘id’ =>5,’first_name’ => ‘pramod’);
     */    
    public function delete($table,$where)
    {
        $sql = “DELETE FROM $table “;
        $k=0;    
        if(!empty($where)){
            foreach($where as $key=>$val){
                if($k==0){
                    $sql .= ” where $key='”.htmlentities($val, ENT_QUOTES).”‘”;
                }else{
                    $sql .= ” AND $key='”.htmlentities($val, ENT_QUOTES).”‘”;
                }
                $k++;
            }
        }else{
            return false;
        }
           $del = $result = $this->dbCon->query($sql) or die(mysqli_error());
            if($del){
               return true;
            }else{
               return false;
            }
        }


    /* select function
       $rows = array(‘id’,’first_name’,’last_name’);
       $where = array(‘id’ =>5,’first_name’ => ‘pramod!’);
       $order = array(‘id’ => ‘DESC’);
       $limit = array(20,10);
    */
    public function select($table, $rows = ‘*’, $where = null, $order = null, $limit = null)
    {
       if($rows != ‘*’){
         $rows = implode(“,”,$rows);
       }

        $sql = ‘SELECT ‘.$rows.’ FROM ‘.$table;
        if($where != null){
            $k=0;
            foreach($where as $key=>$val){
                if($k==0){
                    $sql .= ” where $key='”.htmlentities($val, ENT_QUOTES).”‘”;
                }else{
                    $sql .= ” AND $key='”.htmlentities($val, ENT_QUOTES).”‘”;
                }
                $k++;
            }    
        }

        if($order != null){
            foreach($order as $key=>$val){
                    $sql .= ” ORDER BY $key “.htmlentities($val, ENT_QUOTES).””;
            }    
        }    

      if($limit != null){
             $limit = implode(“,”,$limit);
             $sql .= ” LIMIT $limit”;

        }
        $result = $this->dbCon->query($sql);
        return $result;

    }  

    public function query($sql){
    $result = $this->dbCon->query($sql);
    return $result;
    }

    public function result($result){
    $row = $result->fetch_array();
    $result->close();
    return $row;
    }

    public function row($result){
    $row = $result->fetch_row();
    $result->close();
    return $row;
    }

    public function numrow($result){
    $row = $result->num_rows;
    $result->close();
    return $row;
    }

 }



回答6:


The mysqli_fetch_array function in your fetch method requires two parameters which are the SQL result and the kind of array you intend to return. In my case i use MYSQLI_ASSOC.

That is it should appear like this:

public function fetch($sql) {
$array = mysqli_fetch_array($this->query($sql), MYSQLI_ASSOC);
return $array; }




回答7:


**classmysql.inc.php**

    <?php
        class dbclass { 
            var $CONN;
            function dbclass() { //constructor
                $conn = mysql_connect(SERVER_NAME,USER_NAME,PASSWORD);  
                //$conn = mysql_connect(localhost,root,"","");
                if(!$conn) 
                    {   $this->error("Connection attempt failed");      }
        if(!mysql_select_db(DB_NAME,$conn)) 
                    {   $this->error("Database Selection failed");      }
                $this->CONN = $conn;
                return true;
            }
            //_____________close connection____________//
            function close(){
                $conn = $this->CONN ;
                $close = mysql_close($conn);
                if(!$close){
                  $this->error("Close Connection Failed");  }
                return true;
            }
            function error($text) {
                $no = mysql_errno();
                $msg = mysql_error();
                echo "<hr><font face=verdana size=2>";
                echo "<b>Custom Message :</b> $text<br><br>";
                echo "<b>Error Number :</b> $no<br><br>";
                echo "<b>Error Message  :</b> $msg<br><br>";
                echo "<hr></font>";
                exit;
            }
            //_____________select records___________________//
            function select ($sql=""){
                if(empty($sql)) { return false; }
                if(!eregi("^select",$sql)){ 
                  echo "Wrong Query<hr>$sql<p>";
                        return false;       }
                if(empty($this->CONN)) { return false; }
                $conn = $this->CONN;
                $results = @mysql_query($sql,$conn);            
                if((!$results) or empty($results))  {   return false;       }
                $count = 0;
                $data  = array();
                while ( $row = mysql_fetch_array($results)) {   
                    $data[$count] = $row;
                    $count++;       }
                mysql_free_result($results);
                return $data;
            }

            //________insert record__________________//
            function insert ($sql=""){
                if(empty($sql)) { return false; }
                if(!eregi("^insert",$sql)){ return false;       }
                if(empty($this->CONN)){ return false;       }
                $conn = $this->CONN;            
                $results = @mysql_query($sql,$conn);            
                if(!$results){
                    $this->error("Insert Operation Failed..<hr>$sql<hr>");
                    return false;       }
                $id = mysql_insert_id();
                return $id;
            }
            //___________edit and modify record___________________//
            function edit($sql="")  {
                if(empty($sql)) {   return false;       }
                if(!eregi("^update",$sql)){ return false;       }
                if(empty($this->CONN)){ return false;       }
                $conn = $this->CONN;
                $results = @mysql_query($sql,$conn);
                $rows = 0;
                $rows = @mysql_affected_rows();
                return $rows;
            }
            //____________generalize for all queries___________//
            function sql_query($sql="") {   

                if(empty($sql)) { return false; }
                if(empty($this->CONN)) { return false; }
                $conn = $this->CONN;
                $results = mysql_query($sql,$conn) or $this->error("Something wrong in query<hr>$sql<hr>");

                if(!$results){
                   $this->error("Query went bad ! <hr>$sql<hr>");
                        return false;       }       
                if(!eregi("^select",$sql)){return true;         }
                else {
                    $count = 0;
                    $data = array();
                    while ( $row = mysql_fetch_array($results))
                    {   $data[$count] = $row;
                        $count++;               }
                    mysql_free_result($results);
                    return $data;
                }
            }   

        function extraqueries($sql="")  {   

                if(empty($sql)) { return false; }
                if(empty($this->CONN)) { return false; }
                $conn = $this->CONN;
                $results = mysql_query($sql,$conn) or $this->error("Something wrong in query<hr>$sql<hr>");

                if(!$results){
                   $this->error("Query went bad ! <hr>$sql<hr>");
                        return false;       }       
                else {
                    $count = 0;
                    $data = array();
                    while ( $row = mysql_fetch_array($results))
                    {   $data[$count] = $row;
                        $count++;               }
                    mysql_free_result($results);
                    return $data;
                }
            }   

        } 

    ?>

**config.inc.php**
    <?php
    ini_set("memory_limit","70000M");
    ini_set('max_execution_time', 900);
    ob_start();
    session_start();

    error_reporting(E_ALL & ~E_NOTICE & ~E_DEPRECATED);

    ############################################
    #   Database Server
    ############################################

    if($_SERVER['HTTP_HOST']=="localhost")
    {
        define("DB_NAME","DB_NAME");
        define("SERVER_NAME","SERVER_NAME");
        define("USER_NAME","USER_NAME");
        define("PASSWORD","PASSWORD");
    }
    else
    {
        define("DB_NAME","DB_NAME");
        define("SERVER_NAME","SERVER_NAME");
        define("USER_NAME","USER_NAME");
        define("PASSWORD","PASSWORD");
    }



    #############################################
    #       File paths
    #############################################
    // For  the Database file path
    include("system/classmysql.inc.php");



    //For the inc folders
    define("INC","inc/");

    //For the Function File of the pages folders
    define("FUNC","func/");

    //For the path of the system folder
    define("SYSTEM","system/");


    $table_prefix = 'dep_';

    ################################################################
    #       Database Class
    ################################################################
    $obj_db = new dbclass();

    ?>

**Function Page**


    <?php
    // IF admin is not logged in 
    if(!isset($_SESSION['session_id']))
    {
        header("location:index.php");
    }

    $backpage = 'page.php?type=staff&';
    if(isset($_REQUEST['endbtn']) && trim($_REQUEST['endbtn']) == "Back")
    {
        header("location:".$backpage);
        die();
    }

    // INSERT into database.
    if(isset($_REQUEST['submit']) && trim($_REQUEST['submit']) == "Submit")
    {   
        $pass = addslashes(trim($_REQUEST['password']));
        $password = encrypt($pass, "deppro");

        $username = addslashes(trim($_REQUEST['username']));

        $sql = "select * from ".$table_prefix."users where `UserName` ='".$username."'";
        $result = $obj_db->select($sql);
        if(count($result) == 0)
        {

        $insert="INSERT INTO ".$table_prefix."users (`UserName`)VALUES ('".$username."')";
        $sql=$obj_db->insert($insert);

        $newuserid = mysql_insert_id($obj_db->CONN);
        }
    header("location:".$backpage."msg=send&alert=2");
        die();
    }   

    // DELETE record from database
    if(isset($_REQUEST['action']) && trim($_REQUEST['action'])==3)
    {
        if(isset($_REQUEST['id']) && trim($_REQUEST['id']!=""))
        {   
            $id =  site_Decryption($_REQUEST['id']);
            $sql_del = "Delete from ".$table_prefix."users where StaffID ='$id'";
            $del = $obj_db->sql_query($sql_del);
            header("location:".$backpage."msg=delete&alert=2");
            die();
        }
    }


    // UPDATE the record
    $action=1;
    if((isset($_REQUEST['action']) && trim($_REQUEST['action'])==2) && (!(isset($_REQUEST['submit']) && trim($_REQUEST['submit']) == "Submit")))
    {
        if(isset($_REQUEST['id']) && trim($_REQUEST['id']!=""))
        {
            $id =  site_Decryption($_REQUEST['id']);

            //$id =  $_SESSION['depadmin_id'];
            $sql = "select * from ".$table_prefix."users where StaffID ='$id'";
            $result = $obj_db->select($sql);
            if($result)
            {
                foreach($result as $row)
                {
                    $title = stripslashes($row['StaffTitle']);

                    $action=2;
                }
            }
            if(isset($_REQUEST['submit']) && trim($_REQUEST['submit']) == "Update")
            {   

                $title = addslashes(trim($_REQUEST['title']));


                $sql_upd ="UPDATE ".$table_prefix."users SET `StaffTitle` = '$title' WHERE StaffID ='$id'";
                $result = $obj_db->sql_query($sql_upd);
                $action=1;
                header("location:".$backpage."msg=edited&alert=2");
                die();
            }       
        }
    }



    if(isset($_REQUEST['vid']) && trim($_REQUEST['vid']!=""))
     {
            $id =  site_Decryption($_REQUEST['vid']);
            $sql = "select * from ".$table_prefix."users where StaffID ='$id'";
            $result = $obj_db->select($sql);
            if($result)
            {
                foreach($result as $row)
                {
                    $username = stripslashes($row['UserName']);             
                }
            }
    }


    ?>

<td class="center"><a href="cproperty.php?script=edit&action=2&id=<?php echo site_Encryption($sql[$j]['PropertyID']); ?>"><span class="editbutton">&nbsp;</span></a> &nbsp;<a href="cproperty.php?action=3&id=<?php echo site_Encryption($sql[$j]['PropertyID']); ?>" onClick="return confirm('Are you sure to delete?');"><span class="deletebutton">&nbsp;</span></a>&nbsp; <a class="lightbox" title="View" href="cpropertyview.php?script=view&vid=<?php echo site_Encryption($sql[$j]['PropertyID']); ?>&lightbox[width]=55p&lightbox[height]=60p"><span class="viewbutton">&nbsp;</span></a></td>


来源:https://stackoverflow.com/questions/8474876/connect-to-mysql-database-using-php-oop-concept

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!