无法连接数据库(php)

时间:2014-08-14 13:53:38

标签: php mysql database-connection

我正在处理用户数据库并进行设置,以便我的注册表单中的下拉菜单从数据库中的表中获取它们的值。问题是,当我测试它时,下拉列表是空的。当然,我做的第一件事就是去检查我的联系。为了连接到数据库,我有一个名为BaseDAO.php的文件,其中包含以下内容:

<?php

    class BaseDAO {

        const SQL_HOST = "localhost";
        const SQL_USER = "user6538";
        const SQL_PW = "sdWf234Fg";
        const SQL_DB = "userDB";

        protected $con = null;

        function connect() {
            $this->con = mysql_connect(self::SQL_HOST, self::SQL_USER, self::SQL_PW);
            if(!$this->con) {die('Could not connect to MySQL host: ' . self::SQL_HOST . ' Error: ' . mysql_error()); }
            echo "Connected!"; //NOTE: I only just added this to test it
            mysql_select_db(self::SQL_DB);
        }

        function close() {
           mysql_close($this->con);
        }

    }

?> 

为了测试它,我在课堂外添加了echo "Hello World!";,作为参考,然后我在它下方添加了connect();。我打开了我的页面,只看到了Hello World! ...所以我尝试了echo connect();并且再次没有。然后我尝试了这个:

$baseDAO = new BaseDAO();
$baseDAO->connect();

但仍然没有。然后我评论了整个班级,并添加了这个:

<?php

    //...
    //Commented out class
    //.... 

    function connect() {
        $con = mysql_connect("localhost", "user6538", "sdWf234Fg" );
        if(!$con) { echo "3"; die('Could not connect: ' . mysql_error()); }
        echo "Connected!";
    }

    echo "Hello World!";
    connect();

?>

瞧,输出是这样的:

Hello World!Connected!

我不明白为什么我的班级不起作用......这解释了为什么我的下拉列表不起作用,因为他们的DAO文件需要我的BaseDAO

有人会关心这里发生了什么事吗?我的班级为什么不工作?

注意:我使用朋友的旧项目作为指导,所以理论上我的BaseDAO.php应该有效,因为他的工作。

编辑:更正了第二个connect()函数

中的参数

2 个答案:

答案 0 :(得分:0)

class BaseDAO {

    private static $SQL_HOST = "localhost";
    private static $SQL_USER = "user6538";
    private static $SQL_PW = "sdWf234Fg";
    private static $SQL_DB = "userDB";

    protected static $con = null;

    public static function connect() {
        self::con = mysql_connect(self::SQL_HOST, self::SQL_USER, self::SQL_PW);
        if(!self::con) {die('Could not connect to MySQL host: ' . self::SQL_HOST . ' Error: ' . mysql_error()); }
        echo "Connected!"; //NOTE: I only just added this to test it
        mysql_select_db(self::SQL_DB);
    }

    public static function close() {
       mysql_close(self::con);
    }

}

要连接,请执行以下操作,无需创建类的实例,因为它的静态:

BaseDAO::connect();

答案 1 :(得分:0)

在错误情况下,mysql_connect的返回值为FALSE。 0是正值。 确定,请进行此更改:

    if(self::con === FALSE) {die('Could not connect to MySQL host: ' . self::SQL_HOST . ' Error: ' . mysql_error()); }

您删除CLASS部分的第二个SQL无法正常工作,但奇怪的是。

$con = mysql_connect(self::SQL_HOST, self::SQL_USER, self::SQL_PW);

如果您的类不存在,则没有定义self :: constants。在这种情况下,PHP应该产生错误消息。所以你的描述是错误的并且遗漏了一些东西。