亲爱的所有我正在尝试创建mysqli db连接类,这是我写的第一个php类,我不知道我在哪里做错了,请有人请指正。
这是我的
<?php
class Database
{
private static $m_pInstance; private $link;
private $db_host ='localhost';
private $db_user = 'root';
private $db_pass = 'rootpass';
private $db_name = 'mydb';
private function __construct()
{
$this->link = new mysqli_connect($this->db_host,$this->db_user,$this->db_pass,$this->db_name);
return $this->link;
}
public static function getInstance()
{
if (!self::$m_pInstance)
{
self::$m_pInstance = new Database();
}
return self::$m_pInstance;
}
// here I would like to switch db
public function mydb($query)
{
$this->link->mysqli_select_db($query);
}
// Here I want to run my raw query...
public function query($query)
{
return $this->link->mysqli_query($query);
}
}
?>
我想像这样开始查询
$first_class = Database::getInstance();
$result = $first_class -> query("select * from mytable");
请有人纠正我..请发表评论我想了解控制流程......真的说我对$x = $this->somefun($sql)
非常不舒服
答案 0 :(得分:2)
您正在使用过程实例化方法而不是OO方法来创建连接。请记住,当您创建某个对象(使用new关键字)时,会在该类上调用magic __construct方法。见here
所以而不是
$this->link = new mysqli_connect($this->db_host,$this->db_user,$this->db_pass,$this->db_name);
您需要使用
$this->link = new mysqli($this->db_host,$this->db_user,$this->db_pass,$this->db_name);
此外,由于您在创建连接时选择了数据库,因此此方法可能是必需的。
// here I would like to switch db
public function mydb($query)
{
$this->link->mysqli_select_db($query);
}
电子 浏览文档并学习各种mysqli方法的OO表示,并使用它代替过程函数,这将解决您的许多问题。
顺便使用单例对象的好工作。有些人可能会强烈反对我,但我认为对于数据库连接管理来说这是一个很好的方法。另一种方法是PDO连接缓存,但对于像这样基本的东西,单例就可以了。
如果您收到任何其他错误,请发表评论。