使用PDO查询的静态函数错误

时间:2018-07-03 21:22:12

标签: php pdo

我正在学习oophp,但有一个小问题。

搜索2小时后,我需要您的帮助:(

我的课:

<?php
namespace App;
use \PDO;

class Database {
 private $_pdo = null;
 private static $_connexion = null;

 // + my 4 mysql const

 public function__construct(){
  $this->pdo = new PDO ('mysql:dbname='.const.';host='.const.'', const, const);
}

 public static function getPdo(){
  if(is_null(self::$_connexion)){
   self::$_connexion = new Database();
  }
 }

 public static function select($test, $test2){
  self::getPdo();
  if($test == "*"){
   $req = self::$_pdo->query("SELECT * FROM $test2"); // line 29
  }
 }
}
$test = Database::select('*', 'users');
  

错误:(第29行)致命错误:未捕获错误:访问未声明的静态   属性:App \ Database :: $ _ pdo

我不知道该怎么做,在研究中没有发现任何类似的问题。

感谢帮助!

编辑(抱歉): 天哪,我是个白痴...我删除了static因为有这个原因:注意:在第15行(新PDO ...)中以非静态方式访问静态属性App \ Database :: $ _ pdo

真正的错误是:(当$ _pdo为静态时):

  

在第29行的null处调用成员函数query()

1 个答案:

答案 0 :(得分:0)

您试图将$_pdo作为静态变量进行访问,即使未声明为静态变量也是如此。

这是一个hack,但可以。您可以将其适应您的班级

class Test {

    private $_pdo ;
    private static $self ;

    function __construct() {
        self::$self = $this ;
    }

    public static function select() {
        self::$self->_pdo = 'test' ;    
    }
}

$t = new Test() ;
$t::select() ;