簡體   English   中英

如何在PHP類方法中將db對象傳遞給mysqli_query

[英]How to pass db object to mysqli_query in PHP class method

我試圖在類方法中進行Mysql查詢,並試圖將db對象傳遞給mysql_query函數。

但是它給出了這個錯誤: mysqli :: query()期望參數1是字符串,對象在...中給出。

<?php
class Database
{
    private $db_host = DB_HOST;
    private $db_user = DB_USER;
    private $db_pass = DB_PASS;
    private $db_name = DB_NAME;
    public $link;
    public $error;

    // Constructor
    public function __construct()
    {
        $this->connect();
    }
    private function connect()
    {
        $this->link = new mysqli($this->db_host, $this->db_user, $this->db_pass, $this->db_name);
        if (!$this->link) {
            $this->error = "Database'e baglanilamiyor: " . $this->link->connect_error;
            return false;
        }
        $this->link->query($this->link, "SET NAMES UTF8");
    }
}

我不確定如何將db對象傳遞給類查詢...感謝任何幫助。

使用mysqli對象執行查詢是通過以下方式完成的:

$mysqli_instance->query('select/update/...');

在您的情況下,mysqli_instance是$this->link以及查詢- "SET NAMES UTF8" 只需替換上面的模式:

$this->link->query("SET NAMES UTF8");

創建數據庫對象時,需要使用單例才能一次連接到該數據庫。 您需要創建數據庫實例並在釋放連接之前驗證它是否已連接。

然后,當您進行查詢時,它將看起來像這樣。

   public static function getInstance()
    {
        if (!self::$_instance) { // If no instance then make one
            self::$_instance = new self();
        }

        return self::$_instance;
    }

    /**
     * Magic method clone is empty to prevent duplication of connection
     */
    private function __clone() { }

    /* Return a connection */
    public function getConnection()
    {
        return $this->_connection;
    }

然后,要訪問該數據庫並進行查詢,您需要執行以下操作。

   /** @var Database $connection */
    $db = Database::getInstance();
    $connection = $db->getConnection();

  /** You need to create your query then use this kind kind of statement assuming you have already done the rest */
  $result = mysqli_query($connection , $query);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM