&引用;注意:未定义的属性:stdClass::$id";在php中

&引用;注意:未定义的属性:stdClass::$id";在php中,php,function,session,Php,Function,Session,我在$uid=$data->id行中得到了注意:未定义的属性:stdClass::$id和$uname=$data->username: public function userlogin() { $sql = 'select id, username from login_user where email="'.$this->email.'"and password="'.$this->password.'"'; $result = mysqli_query($th

我在
$uid=$data->id行中得到了
注意:未定义的属性:stdClass::$id
$uname=$data->username

public function userlogin()
{
    $sql = 'select id, username from login_user where email="'.$this->email.'"and password="'.$this->password.'"';
    $result = mysqli_query($this->cn,$sql);
    $numrows = mysqli_num_rows($result);
    if($numrows == 1)
    {
        $data = mysqli_fetch_field($result);
        $uid = $data->id;
        $uname = $data->username;

        $_SESSION['login'] = 1;
        $_SESSION['uid'] = $uid;
        $_SESSION['uname'] = $uname;
        $_SESSION['login_msg'] = 'Login Successfully...';

    }

}

你得到的原因是什么

注意:未定义的属性:stdClass::$id

是因为不返回具有
id
属性的对象。它用于获取有关列的元信息。您可以在其上看到完整的属性列表

你可能想使用


为什么调用<代码> MySqLyfFixChyField函数?MySqLyfFixChyField返回字段定义信息而不是数据。您应该使用<代码> MySqLyFixChyObjult<代码>,而不是<代码> MySqLyFixChixField。请学习并考虑如果某人将密码设置为“DROP DATABASE”,您的代码将做什么?永远不要存储纯文本密码!请使用PHP来处理密码安全性。如果您使用的PHP版本低于5.5,则可以使用
密码\u hash()
。在散列之前,请确保您在它们上安装或使用任何其他清理机制。这样做会更改密码并导致不必要的额外编码。
public function userlogin()
{
    $sql = 'select id, username from login_user where email="'.$this->email.'"and password="'.$this->password.'"';
    $result = mysqli_query($this->cn,$sql);
    $numrows = mysqli_num_rows($result);
    if($numrows == 1)
    {

        /* fetch object array */
        while ($data = mysqli_fetch_object($result)) {
          $uid = $data->id;
          $uname = $data->username;
        }

        /* free result set */
        mysqli_free_result($result);

        $_SESSION['login'] = 1;
        $_SESSION['uid'] = $uid;
        $_SESSION['uname'] = $uname;
        $_SESSION['login_msg'] = 'Login Successfully...';

    }

}