一个非常奇怪的问题?有经验的进来看下

cdchq 2006-04-03 09:27:13
include('./conn.php');
$result=$db->query("select * from web_users where username='$username' and password='$userpwd'");//93行
出现这个提示
Fatal error: Cannot redeclare class db_mysql

我以为是include重复了,改成include_once('./conn.php');,又出现下面的错误
Fatal error: Call to a member function query() on a non-object on line 93

请帮忙看看。
...全文
106 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
cdchq 2006-04-03
  • 打赏
  • 举报
回复
好了,我把conn.php中的include('./include/db_mysql.php');改成once就没问题了。谢谢
颓废的老猫 2006-04-03
  • 打赏
  • 举报
回复
把本出错页面的代码帖出来吧,仔细检查下$db有没有被覆盖了
颓废的老猫 2006-04-03
  • 打赏
  • 举报
回复
我测试了下,很正常啊,没有你说的那些错误啊
cdchq 2006-04-03
  • 打赏
  • 举报
回复
没有
在其它页面中,都能正常执行查询。
颓废的老猫 2006-04-03
  • 打赏
  • 举报
回复
if(!@mysql_connect($dbhost, $dbuser, $dbpw))
把@符号去掉,看看这里有没有什么错误信息。
cdchq 2006-04-03
  • 打赏
  • 举报
回复
我在其它页面中,也包含了conn.php。不过我都是用的include_once。
cdchq 2006-04-03
  • 打赏
  • 举报
回复
conn.php内容如下

<?php
include('./include/db_mysql.php');
$db_username="root"; //连接数据库的用户名
$db_password=""; //连接数据库的密码
$db_database="mydb"; //数据库名
$db_hostname="localhost"; //服务器地址

$db=new db_mysql;
$db->connect($db_hostname, $db_username, $db_password, $db_database);
?>
cdchq 2006-04-03
  • 打赏
  • 举报
回复
dy_mysql类如下:

<?php
class db_mysql {
var $querynum = 0;
function connect($dbhost, $dbuser, $dbpw, $dbname) {//连接数据库
if(!@mysql_connect($dbhost, $dbuser, $dbpw)) {
$this->halt('Can not connect to MySQL server');
}
if($this->version() > '4.1' && $GLOBALS['charset']) {
//ATTENTION: remove the following line if you want to use the default database character set.
mysql_query("SET NAMES 'gbk'");
}
if($this->version() > '5.0') {
mysql_query("SET sql_mode=''");
}
if($dbname) {
mysql_select_db($dbname);
}
}

function select_db($dbname) {//选择数据库
return mysql_select_db($dbname);
}

function fetch_array($query, $result_type = MYSQL_ASSOC) {//以下函数用于从结果取回数组
return mysql_fetch_array($query, $result_type);
}

function query($sql, $type = '') {//执行sql
if($type == 'UNBUFFERED' && @function_exists('mysql_unbuffered_query')) {
$query = mysql_unbuffered_query($sql);
} else {
if($type == 'CACHE' && intval(mysql_get_server_info()) >= 4) {
$sql = 'SELECT SQL_CACHE'.substr($sql, 6);
}
if(!($query = mysql_query($sql)) && $type != 'SILENT') {
$this->halt('MySQL Query Error', $sql);
}
}
$this->querynum++;
return $query;
}

function affected_rows() {//返回inert,update,delete等影响的行数
return mysql_affected_rows();
}

function error() {//返回错误
return mysql_error();
}

function errno() {//返回错误号
return intval(mysql_errno());
}

function result($query, $row) {
$query = @mysql_result($query, $row);
return $query;
}

function num_rows($query) {//返回符合查询条件的总行数
$query = mysql_num_rows($query);
return $query;
}

function num_fields($query) {//本函数可以得到返回字段的数目
return mysql_num_fields($query);
}

function list_tables($query) {//接受一个数据库名并返回和mysql_query() 函数很相似的一个结果指针
return mysql_list_tables($query);
}
function free_result($query) {//释放所有与结果 标识符 result 所关联的内存
return mysql_free_result($query);
}

function insert_id() {//取得上一步INSERT 操作产生的ID
$id = mysql_insert_id();
return $id;
}

function fetch_row($query) {//返回根据所取得的行生成的数组
$query = mysql_fetch_row($query);
return $query;
}

function version() {//返回所使用的服务器版本
return mysql_get_server_info();
}

function close() {//关闭mysql连接
return mysql_close();
}
function halt($message = '', $sql = '') {
exit("MySQL Query:$sql<br> Message:$message");
}
}
?>
Fufay 2006-04-03
  • 打赏
  • 举报
回复
看不到完整脚本。

仔细检查当前脚本和 conn.php ,或者是当前脚本包含的其他脚本中有没有重复定义类。
颓废的老猫 2006-04-03
  • 打赏
  • 举报
回复
把db_mysql类贴出来看看吧
cdchq 2006-04-03
  • 打赏
  • 举报
回复
回上面的,我是把
$db=new db_mysql;
$db->connect($db_hostname, $db_username, $db_password, $db_database);
这两行放到conn.php中,然后include('./conn.php');
颓废的老猫 2006-04-03
  • 打赏
  • 举报
回复
看上去$db应该是一个db_mysql类的对象喔,检查一下,你是什么时候new 这个对象的。

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧