在php类中打开mysql连接的问题

时间:2011-01-23 08:21:23

标签: php mysql

我正在尝试创建自己的类来处理我正在制作的测试网站上的mysql交互。我不能让mysqli_connect()在类声明中工作。每次我尝试在脚本中使用该类时,都会出现此语法错误:

  

解析错误:第7行的C:\ xampp \ htdocs \ autoshop \ classes \ class_db.inc.php中的语法错误,意外'(',期待','或';'

这是我到目前为止的代码:

<?php 
class Db{
    private $host = 'localhost';
    private $db_user = 'username';
    private $db_pass = 'password';
    private $db_name = 'dbname';
    private $con = mysqli_connect($this->host, $this->db_user, $this->db_pass, $this->db_name) or die('failed to connect');

    public function valid_login($login_user, $login_pass){

        if(isset($login_user) && isset($login_pass) && ($login_user !== "") && ($login_pass !== "")){
            include('./includes/functions.php');

            $clean_lu = mysqli_real_escape_string($this->con, $login_user);
            $clean_lp = mysqli_real_escape_string($this->con, $login_pass);

            $login_query = "SELECT hash FROM users WHERE user_name='$clean_lu'";
            $login_results = mysqli_query($this->con, $login_query) or die('bad query');
            $login_hash = mysqli_fetch_array($login_results);

            if(isset($login_hash[0])){
                if(check_hash($clean_lp, $login_hash[0])){
                    return true;
                }else{
                    return false;
                }
            }else{
                return false;
            }
        }
    }

    mysqli_close($this->con);   
}
?>

我一直在看那条线,我找不到任何不好的语法。

我很抱歉,如果这是一个非常简单的解决方案,就在我的面前,我对整个开发人员的事情都很陌生。

2 个答案:

答案 0 :(得分:4)

您无法使用函数调用的结果初始化对象的成员。而是在构造函数中执行此操作。

class Db
{
    private $con;

    public function __construct()
    {
        $this->con = mysqli_connect($this->host, $this->db_user, $this->db_pass, $this->db_name) or die('failed to connect');
    }
    ...
}

此外,mysqli_close($this->con);位于何处?它不属于任何方法。

顺便说一句,是否有任何理由手动关闭连接?

答案 1 :(得分:1)

也许试试这个

$mysqli = new mysqli('localhost', 'my_user', 'my_password', 'my_db');
if ($mysqli->connect_error) 
{
trigger_error('Connect Error (' . $mysqli->connect_errno . ') '
        . $mysqli->connect_error);
}
相关问题