我试图使一个用户类和使用类来处理登录,但从某种原因我的用户类构造函数是读取我的mysqli对象作为一个字符串
这是我的密码
Class.php
<?php
/**
*
*/
class user{
protected $email;
protected $password;
private $db;
protected $user;
function __construct(mysqli $db, $email, $password){
$this -> $db = $db;
$this -> $email = $email;
$this -> $password = $password;
}
protected function check(){
$query = 'SELECT * FROM user WHERE email =?';
$handler = $this -> $db -> prepare($query);
$handler -> execute(array($this->email));
if($handler -> num_rows() > 0){
$user = $handler -> fetch();
$submitpassword = ($this -> $password);
if ($submitpassword == $user['password']) {
return $user;
}
}
return false;
}
public function login(){
$user = $this->check();
if ($user) {
$this->_user = $user; // store it so it can be accessed later
$_SESSION['user_id'] = $user['id'];
return $user['id'];
}
return false;
}
public function getUser(){
return $this->_user;
}
}
?>
mysql.php
<?php
if (!isset($_POST['submit'])) {
echo 'Page not found';
exit();
}
$servername = "localhost";
$username = "root";
$password = "";
$db = "imagesite";
// Create connection
$conn = new mysqli($servername, $username, $password,$db);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
?>
checklogin.php
<?php
include 'mysql.php';
include 'class.php';
// username and password sent from form
$email=$_POST['email'];
$pass=$_POST['password'];
$user = new user($conn, $email, $pass);
$id = $user -> login();
if ($id) {
echo 'Logged it as user id: '.$user_id;
}else{
echo 'did not work';
}
?>
它给了我这个错误
可捕获的致命错误:在第13行的C:\wamp\www\class.php中,类mysqli的对象无法转换为字符串
我要把头发拔出来了,有什么想法吗?
要使用实例属性,不需要美元符号。简单地改变
function __construct(mysqli $db, $email, $password){
$this -> $db = $db;
$this -> $email = $email;
$this -> $password = $password;
}
对此:
function __construct(mysqli $db, $email, $password){
$this->db = $db;
$this->email = $email;
$this->password = $password;
}
我创建了一个Author对象,用于构造函数的方法签名:public Book但是,我所做的赋值要求将Author(实例变量)更改为。当然,现在我以前的构造函数不行了。这是密码 如果我上传的方式不令人满意,我对任何不便表示歉意。我还没有学会使用堆栈溢出。 谢谢!
问题内容: 这是我的基本功能: 此功能能够连接并在我的数据库上执行查询… 我想创建相同的功能,但更通用。…前一个仅用于一个表(),新表必须能够接受查询的参数作为输入,以及将在其中执行查询的类类型。这将允许我仅使用一行来执行查询。 应该是这样的: 您发现我不知道如何“通用”代码… 我希望已经清楚了… PS 应该是DB()中表的类的代表。 谢谢。 问题答案: 如果您打算返回结果集,请使用:
问题内容: 大家晚上好。 当尝试将一个对象传递给另一个对象构造函数时,我似乎遇到了一个奇怪的问题,该对象的构造函数也依赖于要传递给它的对象。 例如,使用以下示例: 但是,在构造ToolBar时,它将返回NullPointerException。当然,这是因为尚未构建webPanel并且需要它。 减速和初始化都必须保留在同一类(称为BuildUI)中,因为这是我设置属性的地方。(对于ToolBar创
这是基于我的最后一个问题,为什么我会得到一个类强制转换异常(与泛型类似)? 这又是我的设计。我有一个抽象的超类AbstractArrayList和两个扩展它的具体子类sorted和UnsortedArrayList。 这里的AbstractArrayList管理实际数据,因为它需要为已经实现的方法。 下面是ArrayListSorted的声明,它扩展了AbstractArrayMyList 以及导
我为什么要这样做?因为lambda表达式生成的ClosureType不是默认可构造的。通过这个“技巧”,我可以默认构造这样的closureType。 此外,模板参数的要求是,它必须为空=>
我正在尝试通过:如果流文件; 在我的主()中,到一个名为“FIFO”的类的构造函数:FIFO(文件); 在FIFO(FIFO.h)的头文件中,我有: 在FIFO.cc,我有: 我一直喜欢(还有更多,我只是粘贴其中一个): 在文件包括从/usr/lib/gcc/x86_64-redhat linux/4.4.7/…/…/…/…/包含/c /4.4.7/bits/localefwd.h: 43,从/u