另一个文件中的PHP调用类方法

时间:2014-05-06 10:15:08

标签: php

我有两个文件,一个文件有一个类和一个连接数据库的方法,第二个文件有一个类来登录用户,当然我需要调用第二个文件中的类和方法来允许登录。

我遇到的问题是当我调用包含类和连接方法的文件未定义时。

文件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

有人能看出我做错了什么......?

3 个答案:

答案 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。您的数据库连接设计也需要改进,看看单例模式