急,改错,一段面向对象的数据联接代码。回复都有分。谢谢。
<?php
class Login
{
var $username; //用户名
var $password; //密码
var $userid; //用户id
var $authtable="admin"; //验证用数据表
var $err_mysql="mysql 出错"; //mysql出错提示
var $err_username="用户名无效"; //用户名无效提示
var $err_password="密码错误"; //密码错误提示
var $err; //出错提示
var $errorreport=false; //显示错误
var $dblink;
function errReport($str) //报错
{
if($this->error_report)
echo "出错: $str";
}
function Login($db_server,$db_user,$db_pass,$db_name) //构造函数,连接数据库
{
if($dblink = new mysqli($db_server,$db_user,$db_pass))
{
$this->dblink=$dblink->select_db($db_name);
}
else
{
$this->errReport($this->err_mysql);
$this->err=$this->err_mysql;
}
}
function userAuth($username,$password) //用户认证
{
$this->username=$username;
$this->userpass=$password;
$sql="select * from `".$this->authtable."` where `username`='$username';";
$artresult = $this->dblink->query($sql);
if($rs = $artresult->fetch_array()) //找到此用户
{
if($password==$rs['password']) //密码匹配
{
$this->userid=$rs['id'];
return true;
}
else //密码不匹配
{
$this->errReport($this->err_password);
$this->err=$this->err_password;
return false;
}
}
else //没有找到此用户
{
$this->errReport($this->err_username);
$this->err=$this->err_username;
return false;
}
}
}
?>
以上是classlogon.php
下面是chklogon.php
<?
require_once('sys_config.php');
require_once('classchklogon.php');
$login->error_report=true;
$login=new Login($db_server,$db_user,$db_pass,$db_name);
if($login->userAuth($_REQUEST['UserName'],$_REQUEST['PassWord']))
{
赋予session
}
?>
问题处在 $artresult = $this->dblink->query($sql); 这段代码。
提示Fatal error: Call to a member function query() on a non-object in
请问怎么解决。
谢谢。
问题点数:50、回复次数:4Top
1 楼xwsn(孤帆远影)回复于 2006-07-04 11:04:18 得分 5
bang upTop
2 楼xuzuning(唠叨)回复于 2006-07-04 11:38:47 得分 40
if($dblink = new mysqli($db_server,$db_user,$db_pass))
{
$this->dblink=$dblink->select_db($db_name);
}
请注意:你的$dblink是一个mysqli对象,而mysqli对象的select_db返回一个逻辑值
于是你的$this->dblink也是一个逻辑值,当然就没有query方法了
应改做
if($this->dblink = new mysqli($db_server,$db_user,$db_pass))
{
$this->dblink->select_db($db_name) or $this->errReport('出错啦');
}
或
if($this->dblink = new mysqli($db_server,$db_user,$db_pass,$db_name))
{
//创建mysqli对象成功时的代码
Top
3 楼anshenghao(幽雅的佐为)回复于 2006-07-04 11:42:44 得分 5
先顶Top
4 楼islandnet(e兔子)回复于 2006-07-04 11:45:01 得分 0
受益匪浅。谢谢。Top




