0

我是 PHP 和 PDO 的新人,我遇到了可能非常简单的语法错误,但我不知道如何正确地用谷歌搜索它。我已经尝试了很多方法来做到这一点,但每次我在同一个字符串上都有错误。有没有更好的方法在类中获取基于 PDO 的请求?我想只是将连接部分包含在一个单独的文件中,但 $db 变量仍然出现相同的错误。

class prepeared{
    private $_conn = "xxx"; //there is a real value here instead of "xxx"
    private $_user = "xxx";
    private $_pass = "xxx";
    private $_db;
    function __construct(){
        try{
        $this->_db = new PDO ($this->_conn, $this->_user, $this->_pass);
        }catch(PDOException $e){
        echo $e;
        }
    }

    static function loginParams($login, $pass){
        $stmt = $this->_db->prepare("SELECT userid from users where login = ? AND pass = ?"); // <<<---- here comes en error "Fatal error: Using $this when not in object..."
        $stmt->bindParam(1, $login, PDO::PARAM_INT);
        $stmt->bindparam(2, $pass, PDO::PARAM_STR);
        $stmt->execute();
        $row = $stmt->fetch(PDO::FETCH_ASSOC);
        return $row['userid'];
    }
}
4

2 回答 2

0

$this在静态上下文中使用,这是没有意义的。static从方法声明中删除或将方法中的内容$_db static更改$this->_db->prepareself::$_db->prepare. 第一个选项可能更适合您的情况。

于 2013-02-11T21:45:48.230 回答
0

静态函数不能使用 to,$this因为它$this指的是使用它的类的实例。静态函数是静态调用的,因此它们不需要类实例,这就是您不能使用的原因$this

于 2013-02-11T21:45:56.260 回答