当不在对象的上下文错误中时使用 $this

using $this when not in object's context error

这里我有 class 调用的 DB,它用于准备 pdo 语句,然后在 PDO 上执行 selectinsert 等 object.Here 我正在尝试 insert 从 html form.But 收集的一些数据,当我执行代码时,它给了我我在问题中提到的错误。 getInstance()insert() 都是 public 静态 function.Can 谁能帮我解决这个问题?

class DB{
        private static $_instance=null;
        private $pdo,
                $query,
                $error=false,
                $results,
                $count=0;
        private function __construct(){
                try{

                    $this->pdo=new PDO('mysql:host='.Config::get('mysql/host').';dbname='.Config::get('mysql/db'),Config::get('mysql/user'),Config::get('mysql/password'));


                }catch(PDOException  $e){
                    echo $e->getMessage();
                }
        }
        public static function getInstance(){
            if(!isset(self::$_instance)){
                  self::$_instance=new DB();
            }
            return self::$_instance;
        }

        private function bind($val){
               $i=1;
               foreach($val as $data){

                   $this->query->bindValue($i,$data);

               }
               $i++;

        }
        public static function insert(){
            $stmt='INSERT INTO users (username,password,name) VALUES (?,?,?)';
            if($this->query=$this->pdo->prepare($stmt)){
                $val=Validate::send();
                $this->bind($val);
                if($this->query->execute()){

                   return 'successfull';
                }
            }
        }
    } 

我这样调用它们:

if(isset($_POST['submit'])){
        $insert=DB::getInstance();
        $insert::insert();
    }   

您在静态函数中使用 $this。这就是您收到错误的原因。

去掉"insert()"前面的"static"然后调用$insert->insert();