0

使用这个:

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

如何将$db值获取到此类中(来自包含“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

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

4

2 回答 2

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);
于 2012-10-31T18:05:36.973 回答
0

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

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

是的,当你从类的方法中引用类的属性时,在你的类内部,使用$this符号......即更改$db$this->db

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

于 2012-10-31T18:03:37.210 回答