CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Web 开发 >  PHP

急,改错,一段面向对象的数据联接代码。回复都有分。谢谢。

楼主islandnet(e兔子)2006-07-04 10:52:08 在 Web 开发 / PHP 提问

<?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

相关问题

关键词

得分解答快速导航

  • 帖主:islandnet
  • xwsn
  • xuzuning
  • anshenghao

相关链接

  • Web开发类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo