【问题标题】:using $this when not in object's context error [duplicate]不在对象的上下文错误中使用 $this [重复]
【发布时间】:2015-04-01 10:49:49
【问题描述】:

这里我有一个名为 DB 的类,它用于准备一个 pdo 语句,然后对 PDO 对象执行selectinsert 等。这里我试图 insert 一些从 html 表单收集的数据。但是当我执行代码它给了我我在问题中提到的错误。 getInstance()insert() 都是公共静态函数。谁能帮我解决这个问题?

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();
    }   

【问题讨论】:

标签: php mysql pdo


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2013-10-16
    • 2012-09-25
    • 1970-01-01
    • 2016-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-11
    相关资源
    最近更新 更多