我有两个文件,一个文件有一个类和一个连接数据库的方法,第二个文件有一个类来登录用户,当然我需要调用第二个文件中的类和方法来允许登录。
我遇到的问题是当我调用包含类和连接方法的文件未定义时。
文件1“连接详细信息”
<?php
class dbConnect{
protected $host = 'localhost';
protected $user = 'root';
protected $pass = 'root';
protected $db = 'bolt_mail';
public function connect(){
$con = mysqli_connect($this->host,$this->user,$this->pass,$this->db) or die('Cannot Connect to DB');
return $con;
}
}
文件2“登录”
class login{
public function con(){
include ('connect.php');
$db = new dbConnect();
$db->connect();
return $db;
}
public function getLogin($email, $pass){
$sql = "SELECT ott_email, ott_password ,app_password , user_status, account_type FROM tbl_user WHERE ott_email='$email' AND app_password='$pass'";
$query = mysqli_query($this->con(), $sql);
$count = mysqli_num_rows($query);
错误:
Warning: mysqli_query() expects parameter 1 to be mysqli, object given in /Applications/MAMP/htdocs/project_ott/php/login.php on line 38
Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, null given in /Applications/MAMP/htdocs/project_ott/php/login.php on line 39
有人能看出我做错了什么......?
答案 0 :(得分:0)
如第一个警告所示,mysqli_query()
期望参数1为mysqli,而不是其他一些对象(在您的情况下,它是dbConnect
返回的con
对象)。由于您从connect
方法返回mysqli连接,因此您应在con
函数中返回相同的连接以供mysqli_query()
使用。试试这个......
class login{
public function con(){
include ('connect.php');
$db = new dbConnect();
return $db->connect();
}
答案 1 :(得分:0)
移动此字符串
include ('connect.php');
到你的第二个文件的顶部,换句话说,在课程登录之外。 这个字符串:
$db->connect();
return $db;
更改为:
return $db->connect();
答案 2 :(得分:0)
试试这个,
public function con(){
include ('connect.php');
$db = new dbConnect();
$conn = $db->connect();
return $conn ;
}
您正在尝试返回类dbConnect的对象,而不是返回函数connect。您的数据库连接设计也需要改进,看看单例模式