&引用;注意:未定义的属性: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...';
}
}