数据库连接到类

时间:2012-10-31 18:01:15

标签: php class mysqli

使用此:

$db = mysqli_connect
(
    $db_host,
    $db_user,
    $db_pwd
) or die ("FATAL ! : The server ".$db_host." is not responding to ".$db_user."!");

如何将 $ db 值放入此类(来自include“class.php”) - 没有错误; - )

class User
{
    public $db;
    public $id;

    public function getUser()
    {
        if($this->id)
        {
            $sql = "
            SELECT
                users.*
            FROM
                users
            WHERE
                users.u_id='".$this->id."'
            ";
            $res = mysqli_query($db, $sql) or die(mysqli_error($db));
            $user_row = mysqli_fetch_object($db, $res);
            return $user_row;
        }
        else
        {
            return false;
        }
    }
    } // end class User

我得到的只是 - 好吧,没有。执行我的主页加载空...如果我停止使用该类,一切都很好(没有显示用户的数据; - )

2 个答案:

答案 0 :(得分:1)

您必须实例化您的类,并且必须使用$this运算符来访问类成员。此外,最好在构造和使用方面注入参数:

class User
{
    private $db;

    public function __construct($db)
    {
       $this->db = $db;
    }

    public function getUser($id)
    {
        if($id)
        {
            $sql = "
            SELECT
                users.*
            FROM
                users
            WHERE
                users.u_id=" . (int)$id ;

            $res = mysqli_query($this->db, $sql) or die(mysqli_error($this->db));
            $user_row = mysqli_fetch_object($this->db, $res);
            return $user_row;
        }
        else
        {
            return false;
        }
    }
 }

用法:

$user = new User($db);
$userdata = $user->getUser(2);

答案 1 :(得分:0)

当你实例化类(User)时,如果你已经分配了变量($ db)......你可以做

$user = new User;
$user->db = $db;
$user->getUser();

是在您的类中,当您从其方法引用类的属性时,请使用$this表示法...即将$db更改为$this->db

应该有用。你提到了一些关于抑制错误的事情,这是一个不同的问题。我不确定你的目标是什么,但在课程实例化之前的正常异常处理就足够了。