Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Lỗi nghiêm trọng:Gọi đến một truy vấn hàm thành viên () PHP CLASS

Phương pháp của bạn:

public function db_connect() {    

            $connection = mysqli_connect(self::$db_host, self::$db_user, self::$db_pass, self::$db_name) or die("Error " . mysqli_error($connection)); 
            echo "Conexión realizada". "<br>";

    }  

không chạy lại $connection quay lại từ phương thức nên các lệnh gọi phương thức còn lại không thực hiện được điều này:

public function db_connect() {    

            $connection = mysqli_connect(self::$db_host, self::$db_user, self::$db_pass, self::$db_name) or die("Error " . mysqli_error($connection)); 
            echo "Conexión realizada". "<br>";
           return $connection; // return the $connection object
    }  

Như đã đề cập, mã của bạn không hiệu quả vì đối với mọi truy vấn được thực hiện, mã (lại) kết nối với DB. Nó đắt tiền / không hiệu quả một cách không cần thiết.

Có nhiều cách tiếp cận để giải quyết vấn đề này.

  1. Kết nối với DB trên bản khởi tạo của lớp DB

ví dụ:

class Db{

    private static $db_host = "localhost";
    private static $db_user = "root";
    private static $db_pass = "";
    private static $db_name = "sivi";

    public $connection;

    public function __construct()
   {
      $this->connection = $this->db_connect();
   }  

    public function db_connect() {    

            $connection = mysqli_connect(self::$db_host, self::$db_user, self::$db_pass, self::$db_name) or die("Error " . mysqli_error($connection)); 
            echo "Conexión realizada". "<br>";
            return $connection;
    }  
}
  1. Kết nối chậm, tức là chỉ kết nối với truy vấn được thực thi đầu tiên

ví dụ:

class Db{

    private static $db_host = "localhost";
    private static $db_user = "root";
    private static $db_pass = "";
    private static $db_name = "sivi";
    public $connection = null;
    public function __construct()
    {
    }  
    public function db_connect() {    
        $connection = mysqli_connect(self::$db_host, self::$db_user, self::$db_pass, self::$db_name) or die("Error " . mysqli_error($connection)); 
        echo "Conexión realizada". "<br>";
        return $connection;
    }  
    public function db_query($query){
        if ( null ==== $this->connection ) $this->connection = $this->db_connect();
        var_dump($query);
        $result = $this->connection->query($query);
        while($row = mysqli_fetch_array($result)) { 
            echo $row["COD_PRE"] . "<br>";
        }
    }
}


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách ĐẶT HÀNG THEO TRƯỜNG HỢP trong Doctrine2 (Symfony2)

  2. Sử dụng MySQL và Neo4j cùng nhau có phải là một ý tưởng hay không?

  3. Tạo mã QR từ các hàng MySQL

  4. Tại sao một truy vấn chèn đôi khi mất quá nhiều thời gian để hoàn thành?

  5. PHP, PDO, MySQL, Thông báo:Đang cố gắng lấy thuộc tính của non-object