在非对象

时间:2017-05-26 10:49:15

标签: php class object bindparam

绑定参数函数bind_param()被认为是一个非对象并且不断抛出那些让我头疼的错误,因为我是PHP的新手。用于连接到数据库的代码最初是抛出错误,即使我从我正在工作的登录脚本中复制它...



<?php
class User {
	private $result;
	private static $db;

	public function __construct($cookie) {
	    self::$db = mysqli_connect('localhost', 'username', '', 'dbname');
	    var_dump(self::$db);
	    
		$query = self::$db->prepare('SELECT * FROM users WHERE cookie=?');
        var_dump($query);
		$query->bind_param('s', $cookie);
		

		$this->result = $query->get_result()->fetch_array();
	}
	
	public static function checkUser($cookie) {
	    self::$db = mysqli_connect('localhost', 'username', "", 'dbname');
	    
		$query = self::$db->prepare('SELECT cookie FROM users WHERE cookie=?');
		$query->bind_param('s', $cookie);

		$result = $query->get_result()->fetch_array();
		
		if ($cookie == $result[0]) return true;

		return false;
	}

	public function getName() {
		return $this->result['name'];
	}

	public function getSurname() {
		return $this->result['surname'];
	}

	public function getEmail() {
		return $this->result['email'];
	}

	public function getGroup() {
		return $this->result['perm_group'];
	}

	public function getEstablishment() {
		return $this->result['establishment'];
	}
}
?>
&#13;
&#13;
&#13;

我们的想法是创建一个类(User),以便我们可以从其他页面调用函数来获取用户的详细信息,例如Cookie。我已经这么做了几个小时了,老实说,我不知道最近发生了什么。

2 个答案:

答案 0 :(得分:0)

如果发生错误,

mysqli::prepare将返回false。

$query = self::$db->prepare('SELECT cookie FROM users WHERE cookie=?');
$query->bind_param('s', $cookie);

如果有错误,则没有结果对象来调用bind_param。

答案 1 :(得分:0)

这个问题很简单,我们忘记了一个存储cookie的列。

对于愚蠢的问题女士们抱歉