gpt4 book ai didi

PHP 无法从对象中回显用户名

转载 作者:行者123 更新时间:2023-11-29 07:56:22 25 4
gpt4 key购买 nike

我正在尝试使用 session 变量并通过页面上的对象调用登录用户的详细信息。用户已经通过我的登录对象登录。这是我的对象:

class User {
public $userdata = array();


//instantiate The User Class
public function User(){ }

public function set($var, $value) {
$this->userdata[$var] = $value;
}

public function get($var) {
if(isset($this->userdata[$var]))
{
return $this->userdata[$var];
}
return NULL;
}

function __destruct() {
if($this->userdata){
$this->userdata;
}
}
}

class UserService {
private $db;
private $fields;
public $user;
private $session;


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

}



// //get current user by ID
public function getCurrentUser($session) {

$this->session = $session;

$query = sprintf("SELECT * FROM User WHERE idUser=%s",
$this->db->GetSQLValueString($this->session, "int"));
$result = $this->db->query($query);

if($result && $this->db->num_rows($result) > 0){

//create new user
$user = new User();
$row = $this->db->fetch_assoc($result);

//set as object
foreach($row as $key => $value) {
$user->set($key, $value);

break;
}
return $user;
//return $this->user;

}
return NULL;


}
}

在我的页面上,我检查了我的 session 变量是否有一个值,所以我像这样调用该对象。

 $um = new UserService();
$user = $um->getCurrentUser($_SESSION['MM_Username']);
echo $user->get('UserSurname');

但是,我在页面上没有看到用户姓氏。我已经检查了无对象查询,我看到了一个姓氏,但一旦它的对象不起作用。

最佳答案

我认为问题出在这里:

foreach($row as $key => $value) {
$user->set($key, $value);

break; // you should probably remove it
}

您应该使用不必要的中断,并且可能在设置例如 id 之后,您停止设置另一个对象属性(UserSurname、Name 等)。

此外,在 $_SESSION['MM_Username'] 中存储的是 idUser 而不是 UserName,这非常令人困惑

关于PHP 无法从对象中回显用户名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25031309/

25 4 0