mysqli连接面向对象的风格不起作用

时间:2018-02-12 18:04:08

标签: php database class object mysqli

我试图在PHP中使用面向对象的样式连接到我的数据库,但浏览器显示以下错误:

  

致命错误:在null中调用成员函数prepare()   /home/brasi862/public_html/lixeira/controller/Controller.php在线   13

看起来__construct函数没有在另一个函数上运行。我已经遇到了几个类似的主题,并按照答案,但没有任何效果。

如果我将__construct的内容放在登录函数中,则代码可以正常工作。

我的代码是:

class Controller{
    private $mysqli;
    function __construct(){
        $mysqli = new mysqli('localhost','root','','mytable'); 

        if($mysqli->connect_error){
            print_r('erro: '.$mysqli->connect_error);
        }
    }

    function login($user,$senha){
        if($stmt = $mysqli->prepare("SELECT username, senha FROM lixeira WHERE username = ? AND senha = PASSWORD(?)")){
            $stmt->bind_param('ss',$user,$senha);
            $stmt->execute();

            $result = $stmt->get_result();
            while($u = $result->fetch_array(MYSQLI_ASSOC)){
                $saida = array(
                    'username' => $u['username'],
                    'senha' => $u['senha']
                );
            }

            $stmt->store_result();
            if($stmt->num_rows > 0){
                $saida['success'] = true;
            }
            else{
                $saida['success'] = false;
            }
            $stmt->close();
        }
        $mysqli->close();
        return $saida;
    }
}

代码有什么问题,因此无法在函数中使用连接?

0 个答案:

没有答案