php - 在 sql 查询中使用 SESSION 变量时尝试获取非对象的属性

标签 php mysql sql session-variables

所以我目前正在编写一个系统,当他们登录时,他们会得到一个专门的排名面板。

默认情况下,他们称为用户,而管理员则称为 Admin。

当我尝试验证他们是管理员时。

error_reporting(E_ALL); // i've been trying to find the bugs with this
require_once('db.php'); //using the good ol $conn = new mysqli
session_start();
if(!isset($_SESSION['username']) || empty($_SESSION['username'])){
  header("location: login.php");
  exit;
//to detect if they are logged in or not
}

//here is a failed attempt where I tried to "escape" the $_SESSION variable 
//  which still doesn't work
$username = $conn->real_escape_string($_SESSION['username']);
// I've tried this query with the $_SESSION variable escaped, with it's alias
// etc.
$query1 = "SELECT * FROM `users` WHERE `rank` = Admin AND 
`username`='".$username."'";

// preparing to execute
$result = $conn->query($query1);

// this is where I detect if there is a row, set it to use Admin things 
// which I will code later, for now just var holders.
if ($result->num_rows > 0) {
  $rank = 'Admin';
} else {
  $rank = 'User';
}

我到处查看有关非对象属性的信息,但我只找到 2008 年的旧帖子,我曾尝试实现这些帖子,但最终无法正常工作。

在 PHP 7 中使用 XAMPP (apache)

最佳答案

你需要更正你的SQL

"SELECT * FROM `users` WHERE `rank` = Admin AND `username`='".$username."'"

"SELECT * FROM `users` WHERE `rank` = 'Admin' AND `username`='".$username."'"

注意 Admin

之间的单引号

我建议改用下面的 SQL,并将排名值直接存储到 SESSION

"SELECT rank FROM `users` WHERE `username`='".$username."'"

关于php - 在 sql 查询中使用 SESSION 变量时尝试获取非对象的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48414748/

相关文章:

php - 找不到类 mysqli

c# - 关于Mysql更新!

sql - Postgres 复杂的全外连接保留 "on"列中的空值

使用 MySQL Workbench 添加外键时出现 MySQL 错误 1064

php - 如何在 laravel dompdf 中自定义字体和页面?

php - 防止PHP解析someFile.php.txt等非PHP文件

php - 状况不能正常工作

php - 使用 MySQL 和 PHP 在多个表中搜索

php - 使用 PHP 不工作创建数据库记录

sql - 使用 Postgres 时为 "Operator does not exist: integer =?"