尝试从 PHP 中的 PDO 对象形式的查询中获取结果
Trying to fetch results from a query as a PDO Object in PHP
问题: 所以每当我尝试登录时 returns 出现以下错误:
注意:试图在第 191
行 /butler/Classes/users/users.php 中获取非对象的 属性 'user_id'
发生这种情况是因为我尝试从 table 检索 user_id 的获取方法为空,尽管 fetchColumn()
函数显示在查询中找到了 1 行。
我已经检查了数据库 table 并且命名是正确的。 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)) {
我还建议您查看 ,因为您当前的方法是使用不推荐的普通密码。
问题: 所以每当我尝试登录时 returns 出现以下错误: 注意:试图在第 191
行 /butler/Classes/users/users.php 中获取非对象的 属性 'user_id'发生这种情况是因为我尝试从 table 检索 user_id 的获取方法为空,尽管 fetchColumn()
函数显示在查询中找到了 1 行。
我已经检查了数据库 table 并且命名是正确的。 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)) {
我还建议您查看