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