Heim > Backend-Entwicklung > PHP-Tutorial > 求大神纠错,谢谢Fatal error: Call to a member function query() on a non-object

求大神纠错,谢谢Fatal error: Call to a member function query() on a non-object

WBOY
Freigeben: 2016-06-23 13:46:15
Original
1229 Leute haben es durchsucht

如题,出现错误。Fatal error: Call to a member function query() on a non-object in D:\WWW\2shou\class\Bulletin.php on line 47
代码如下: 
//本类用于保存对表Bulletin的数据库访问操作
//表的每个字段对应类的一个成员变量
Class Bulletin
{
  public $Id; // 记录编号
  public $Title; // 公告标题
  public $Content; // 公告内容
  public $PostTime; // 发布日期
  public $Poster; // 发布人
  var $conn;

  function __construct() {
// 连接数据库
$this->conn = mysqli_connect("localhost", "root", "pass", "2shou"); 
mysqli_query($this->conn, "SET NAMES gbk");
  }

  function __destruct() {
// 关闭连接
mysqli_close($this->conn);
  }

  // 获取公告信息
  function GetBulletinInfo($bid)  {
//设置查询的SELECT语句
  $sql = "SELECT * FROM Bulletin WHERE Id='" . $bid . "'";
// 打开记录集
    $results = $this->conn->query($sql);
// 读取公告数据
if($row = $results->fetch_row())  {
     $this->Id = $bid;
  $this->Title = $row[1];
  $this->Content = $row[2];
  $this->PostTime = $row[3];
      $this->Poster = $row[4];
}
else {
  $this->Id=0;
}
  }

  // 获取所有公告信息,返回结果集
  function GetBulletinlist()  {
//设置查询的SELECT语句
$sql = "SELECT * FROM Bulletin ORDER BY PostTime DESC";
    $results = $this->conn->query($sql);
    return $results;
  }

  // 获取所有公告信息,返回结果集
  function GetRecentBulletinlist()  {
//设置查询的SELECT语句
$sql = "SELECT * FROM Bulletin WHERE DateDiff(day, getdate(), Posttime)     $results = $this->conn->query($sql);
    return $results;
  }

  // 添加公告信息
  function insert()  {
    $sql = "INSERT INTO Bulletin (Title, Content, PostTime, Poster) VALUES ('" . $this->Title . "','" . $this->Content . "','" . $this->PostTime . "','" . $this->Poster . "')";
// 执行SQL语句
$this->conn->query($sql);
  }

  // 修改公告信息
  function update($bid)  {
    $sql = "UPDATE Bulletin SET Title='" . $this->Title . "', Content='" . $this->Content . "', PostTime='" . $this->PostTime . "', Poster='" . $this->Poster . "' WHERE Id=" . $bid;
    // 执行SQL语句
$this->conn->query($sql);
  }

  // 批量删除公告信息
  function delete($bid)  {
    $sql = "DELETE FROM Bulletin WHERE Id IN (" . $bid . ")";
    // 执行SQL语句
$this->conn->query($sql);
  }
}
?>


回复讨论(解决方案)

你在构造函数中
 function __construct() {
    // 连接数据库
    $this->conn = mysqli_connect("localhost", "root", "pass", "2shou"); 
    mysqli_query($this->conn, "SET NAMES gbk");
 }
所以 $this->conn 是资源
但你在其他方法中却用 $results = $this->conn->query($sql); 进行访问
那么 $this->conn 什么时候又变成对象了呀?

所以构造函数应写作

function __construct() {  $this->conn = new mysqli("localhost", "root", "pass", "2shou");  $this->conn->set_charset('gbk');}
Nach dem Login kopieren

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage