我正在处理用户数据库并进行设置,以便我的注册表单中的下拉菜单从数据库中的表中获取它们的值。问题是,当我测试它时,下拉列表是空的。当然,我做的第一件事就是去检查我的联系。为了连接到数据库,我有一个名为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()函数
中的参数答案 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应该产生错误消息。所以你的描述是错误的并且遗漏了一些东西。