使用此:
$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
我得到的只是 - 好吧,没有。执行我的主页加载空...如果我停止使用该类,一切都很好(没有显示用户的数据; - )
答案 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
应该有用。你提到了一些关于抑制错误的事情,这是一个不同的问题。我不确定你的目标是什么,但在课程实例化之前的正常异常处理就足够了。