Closed. This question is off-topic。它目前不接受答案。
想改进这个问题吗?Update the question所以堆栈溢出的值小于aa>。
5年前关闭。
亲爱的,我正在尝试创建mysqli db connect类,这是我正在编写的第一个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)

最佳答案

您正在使用过程实例化方法而不是OO方法来创建连接。记住,当您创建对象(使用new关键字)时,会对该类调用magic\u 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);
}

e类
浏览文档,学习各种mysqli方法的OO表示,并用它代替过程函数,这将解决很多问题。
顺便说一句,使用单例对象做得很好。有些人可能强烈反对我的观点,但我认为对于数据库连接管理来说,这是一个很好的方法另一种方法是PDO连接缓存,但是对于像这样的基本方法,单例方法很好。
如果您收到任何其他错误,请留言。

关于php - mysqli db connect类不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24713940/

10-15 13:17