连接时出现未知错误


Unknown error while connecting

我正试图通过观看lynda.com的视频来学习面向对象的PHP。问题是他们正在使用MySQL,而我正在尝试使用MySQLi。我使用的是在装有Windows7的本地系统上安装的xampp。我有一个包含以下内容的配置文件:

// Database Constants
defined('DB_SERVER') ? null : define("DB_SERVER", "127.0.0.1");
defined('DB_USER')   ? null : define("DB_USER", "gallery");
defined('DB_PASS')   ? null : define("DB_PASS", "phpOTL123");
defined('DB_NAME')   ? null : define("DB_NAME", "photo_gallery");

然后我有一个database.php文件来进行连接:

require_once("config.php");
class MySQLDatabase {
private $conn;
function __construct() {
  $this->open_connection();
}
public function open_connection() { 
   $this->conn = mysqli_connect('.', 'DB_USER', 'DB_PASS','DB_NAME');
  // $this->conn = mysqli_connect("127.0.0.1", "gallery", "phpOTL123");
   if (!$this->conn) {
       die("Database connection failed: " .mysqli_connect_error($this->conn));
   } else {
       $db_select = mysqli_select_db($this->conn, "photo_gallery");
       if(!$db_select) {
           die("Database selection failed: " .mysqli_connect_error($this->conn));
       }
   }
}

事实上,它不会连接,但当我尝试不使用常量时,它会连接。我得到以下错误:

Unknown errror while connecting in C:'xampp'htdocs'sandbox'photo_gallery'includes'database.php on line 12.  

12号线为

$this->conn = mysqli_connect('.', 'DB_USER', 'DB_PASS','DB_NAME');

我以前在一个单独的文件中使用过MySQLi,购买时没有使用常量,也没有问题。我尝试过将它们放在同一个文件(database.php)中,但仍然得到了相同的错误。我还研究了其他类似的问题,他们建议使用

require_once(dirname(__FILE__) . DIRECTORY_SEPARATOR . "config.php");

但这仍然无济于事。我是不是遗漏了一些常量?

您将常量的名称作为字符串而不是其值传递,请将其更改为以下内容:

$this->conn = mysqli_connect(DB_SERVER, DB_USER, DB_PASS, DB_NAME);

使用常量不需要引号。

主机名应该是FQDN或IP地址。此外,不应该有任何包含常量的'。请将行更改为以下任意一行:

$this->conn = mysqli_connect('localhost', DB_USER, DB_PASS, DB_NAME);
$this->conn = mysqli_connect('127.0.0.1', DB_USER, DB_PASS, DB_NAME);

或者您需要使用已定义的常量!

$this->conn = mysqli_connect(DB_SERVER, DB_USER, DB_PASS, DB_NAME);