-3

这个例子来自 lynda php 超越基本

配置文件

<?php
    defined('DB_SERVER') ? null : define("DB_SERVER", "localhost");
    defined('DB_USER')   ? null : define("DB_USER", "root");
    defined('DB_PASS')   ? null : define("DB_PASS", "");
    defined('DB_NAME')   ? null : define("DB_NAME", "photo_gallery");
?>

数据库.php

<?php
require_once('config.php');

class MySQLDatabase {

private $connection;

function __construct(){
    $this->open_connection();
}

public function open_connection(){
    $this->connection = mysql_connect(DB_SERVER, DB_USER, DB_PASS);
    
    if (!$this->connection) {
        die("Database connection failed: " . mysql_error());
    } else {
        $db_select = mysql_select_db(DB_NAME, $this->connection);
        
        if (!$db_select) {
            die("Database selection failed: " . mysql_error());
        }
    }
}

public function close_connection(){

    if(isset($this->connection)) {
        mysql_close($this->connection);
        unset($connection);
    }
}

public function query($sql) {
    $result = mysql_query($sql, $this->connection);
    $this->confirm_query($result);
    return $result;
}



private function confirm_query($result){
    if (!$result) {
        die("Database query failed: " . mysql_error());
    }   
}
}

$database = new MySQLDatabase();

?>

索引.php

<?php
    require_once("../includes/database.php");

    if (isset($database)) {
        echo "true";
    } else {
        echo "false";
    }

?>

现在,当我尝试 index.php 在浏览器上运行它时,我遇到了一个错误错误说:

不推荐使用:在第 80 行的 C:\xampp\php\PEAR\Config.php 中不推荐使用通过引用分配 new 的返回值

不推荐使用:在第 166 行的 C:\xampp\php\PEAR\Config.php 中不推荐使用通过引用分配 new 的返回值

注意:使用未定义的常量 DB_SERVER - 在第 13 行的 C:\xampp\htdocs\photo_gallery\includes\database.php 中假定为“DB_SERVER”

注意:使用未定义的常量 DB_USER - 在第 13 行的 C:\xampp\htdocs\photo_gallery\includes\database.php 中假定为“DB_USER”

注意:使用未定义的常量 DB_PASS - 在第 13 行的 C:\xampp\htdocs\photo_gallery\includes\database.php 中假定为“DB_PASS”

警告:mysql_connect() [function.mysql-connect]:php_network_getaddresses:getaddrinfo 失败:不知道这样的主机。在第 13 行的 C:\xampp\htdocs\photo_gallery\includes\database.php

警告:mysql_connect() [function.mysql-connect]:[2002] php_network_getaddresses:getaddrinfo 失败:不知道这样的主机。(尝试通过 tcp://DB_SERVER:3306 连接)在第 13 行的 C:\xampp\htdocs\photo_gallery\includes\database.php

警告:mysql_connect() [function.mysql-connect]:php_network_getaddresses:getaddrinfo 失败:不知道这样的主机。在第 13 行的 C:\xampp\htdocs\photo_gallery\includes\database.php 数据库连接失败:php_network_getaddresses:getaddrinfo 失败:不知道这样的主机。

我通过重命名 config.php 以某种方式修复了错误

所以这是我的问题,为什么我得到这个错误?是 config.php 文件名的问题吗?Lynda php 超越基础的视频教程没有出现此错误。

4

2 回答 2

1

您的本地配置存在某种错误,可能是因为您安装了一些第三方PEAR,因此出现错误消息:

不推荐使用:在第 166 行的 C:\xampp\php\PEAR\Config.php 中不推荐使用通过引用分配 new 的返回值

您应该修改系统使用的包和库,因为此错误消息是过时代码的标志(已弃用)。就个人而言,我在 Windows 上使用 XAMPP,我的项目也在config.phphtdocs文件夹中,没有任何类似的错误。问题是链接文件是针对的。在我的系统上,第 166 行内容如下:

$this->container = new Config_Container('section', 'root');

config.php是调用配置文件的一个约定俗成的名字,没有问题。保持这个名称不会降低安全障碍,这可以通过重命名来解决。

如果您的项目成功加载配置文件,其他错误将得到修复。还:

警告:

请不要使用mysql_*函数来编写新代码。它们不再被维护并且社区已经开始了弃用过程。看到红框了吗?

相反,您应该了解准备好的语句并使用PDOMySQLi本文应该提供一些有关决定使用哪个 API 的详细信息。对于 PDO,这里有一个很好的教程

于 2012-08-08T11:32:57.477 回答
0

这可能是由于同一目录中存在“config.php”和“Config.php”文件。在 Windows 中,文件名不区分大小写。在 linux 中,它们是。

于 2012-08-08T11:28:28.763 回答