[英]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.