繁体   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