[英]Trying to fetch results from a query as a PDO Object in PHP
问题:因此,每当我尝试登录时,它都会返回以下错误: 注意:尝试在第191行的/butler/Classes/users/users.php中获取非对象的属性“ user_id”
发生这种情况是因为我尝试从表中检索user_id的fetch方法为空,尽管fetchColumn()
函数显示在查询中找到1行。
我已经检查了数据库表,并且命名正确。 html表单也正确传递了参数,这就是为什么我没有发布代码的那部分。
登录页面php
if (!empty($_POST['btnLogin'])) {
$username = trim($_POST['username']);
$password = trim($_POST['password']);
if ($username == "") {
$login_error_message = 'Username field is required!';
} else if ($password == "") {
$login_error_message = 'Password field is required!';
} else {
$user_id = $app->Login($username, $password); // check user login
if($user_id > 0)
{
$_SESSION['user_id'] = $user_id; // Set Session
header("Location: dashboard/layout.php"); // Redirect user to the profile.php
}
else
{
$login_error_message = 'Invalid login details!';
}
}
}
功能登录
public function Login($username, $pass)
{
try {
$db = DB();
$query = $db->prepare("SELECT user_id FROM start_users WHERE (user_start= :username) AND (psw= :pass) ");
$query->bindParam("username", $username, PDO::PARAM_STR);
//$enc_password = hash('sha256', $password);
$query->bindParam("pass", $pass, PDO::PARAM_STR);
$query->execute();
if ($query->fetchColumn() > 0) {
$result = $query->fetch(PDO::FETCH_OBJ);
echo 'resultado'.$result.' ';
print_r($query->errorInfo());
return $result->user_id;
} else {
return false;
}
} catch (PDOException $e) {
exit($e->getMessage());
}
}
您打给
if ($query->fetchColumn() > 0) {
正在检索该行,因此下一个调用
$result = $query->fetch(PDO::FETCH_OBJ);
正在尝试读取另一行,我认为该行不存在。
您应该只打一个电话
if ($result = $query->fetch(PDO::FETCH_OBJ)) {
我还建议您研究如何使用password_hash,因为当前方法使用的是不推荐使用的普通密码。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.