doushi8186 2014-05-24 22:21
浏览 30
已采纳

调用非对象上的成员函数

EasyCMS PHP

 <?php
   $sql="";
   $query="";
   $content="";
   $row="";
   $d="";
   class easyCMS { 
     public $connect;
     public function content($content){
       $sql="SELECT $content FROM easyCMS";
   $query = mysqli_query($this->connect,$sql);
   $row = mysqli_fetch_row($query);
   return $row[0];
     }
     public function update($d,$k){
       $sql = "UPDATE easyCMS SET $d=$k";
   $query = mysqli_query($this->connect,$sql);
     }
   }
 ?>

Then later I add this in my index.php

index php

 <?php
  include_once('database.php');
  include_once('easyCMS.php');
  $easyCMS->connect = $connect; 
  $easyCMS = new easyCMS($connect);
 ?>
 <!DOCTYPE html>
   <head>
   </head>
   <body>
     <?php echo $easyCMS->content('index'); ?>
   </body>
  </html>

But I get this error each time

Fatal error: Call to a member function content() on a non-object in .../index.php on line 16

Any suggestions as to what I am doing wrong?

  • 写回答

1条回答 默认 最新

  • doulai2025 2014-05-24 22:35
    关注

    I will now post as an answer now that you have corrected the error message. This seems more clearly to be the likely source of the error.

    $easyCMS does not appear to be defined. You need to create the object before referencing it methods and properties:

    $easyCMS = new easyCMS;
    

    You should add the connect var to the class and reference it with $this->connect within the scope of the class. Set the value of $this->connect by passing $connect to it when creating a new instance of the class: $easyCMS = new easyCMS($connect); The full code is as follows:

    class easyCMS {  
        public $connect;
    
        public function __construct($connect){
            $this->connect = $connect;
        }
    
    
      public function content($content){
         $sql="SELECT $content FROM easyCMS";
     $query = mysqli_query($this->connect,$sql);
     $row = mysqli_fetch_row($query);
     return $row[0];
     }
     public function update($d,$k){
       $sql = "UPDATE easyCMS SET $d=$k";
       $query = mysqli_query($this->connect,$sql);
     }
    

    index.php

    <?php
      include_once('database.php');
      include_once('easyCMS.php');
      $easyCMS = new easyCMS($connect);
     ?>
     <!DOCTYPE html>
       <head>
       </head>
       <body>
         <?php echo $easyCMS->content('index'); ?>
       </body>
      </html>
    ?>
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 神经网络预测均方误差很小 但是图像上看着差别太大
  • ¥15 Oracle中如何从clob类型截取特定字符串后面的字符
  • ¥15 想通过pywinauto自动电机应用程序按钮,但是找不到应用程序按钮信息
  • ¥15 如何在炒股软件中,爬到我想看的日k线
  • ¥15 seatunnel 怎么配置Elasticsearch
  • ¥15 PSCAD安装问题 ERROR: Visual Studio 2013, 2015, 2017 or 2019 is not found in the system.
  • ¥15 (标签-MATLAB|关键词-多址)
  • ¥15 关于#MATLAB#的问题,如何解决?(相关搜索:信噪比,系统容量)
  • ¥500 52810做蓝牙接受端
  • ¥15 基于PLC的三轴机械手程序