我正在处理一个用户数据库并对其进行设置,以便注册表中的下拉菜单从数据库中的表中获取值。问题是,当我测试它时,下拉菜单是空的。当然,我做的第一件事就是去检查我的连接。为了连接到数据库,我有一个名为 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
。
有人愿意告诉我这里发生了什么吗?为什么我的课不能上课?
注意:我正在使用 friend 的旧项目作为指导,因此理论上我的 BaseDAO.php
应该可以工作,因为他已经工作了。
编辑:更正了第二个 connect() 函数中的参数
最佳答案
错误情况下mysql_connect的返回值为FALSE。 0 是正值。 为了确定起见,请进行以下更改:
if(self::con === FALSE) {die('Could not connect to MySQL host: ' . self::SQL_HOST . ' Error: ' . mysql_error()); }
你的第二个 SQL,你确实删除了 CLASS 部分,无法工作,但奇怪的是它却工作了。
$con = mysql_connect(self::SQL_HOST, self::SQL_USER, self::SQL_PW);
如果您的类不存在,则您没有定义 self::常量。在这种情况下,PHP 应该会生成一条错误消息。所以你的描述是错误的并且缺少一些东西。
关于php - 连接到数据库时出现问题 (php),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25309806/