我正在尝试通过关注lynda.com视频来学习PHP的OOP。问题是他们正在使用MySQL而我正在尝试使用MySQLi。我在Windows 7的本地系统上使用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");
但这仍然无济于事。我错过了常量吗?
答案 0 :(得分:3)
您将常量的名称作为字符串传递,而不是其值,将其更改为以下内容:
$this->conn = mysqli_connect(DB_SERVER, DB_USER, DB_PASS, DB_NAME);
使用常量不需要引号。
答案 1 :(得分:0)
主机名应为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);