我的数据库中有一个“用户”表(目前有4个用户),其中包含不同的角色(1 =用户,2 =管理员,3 =主持人)。我只想向管理员和主持人显示我的php脚本的某些行,因此我进行了以下查询: (我知道这是不安全的)
$conn = mysqli_connect($dbhost, $dbuser, $dbpass, $dbname);
$stuff = 'SELECT * FROM `users` WHERE role > 0';
$result = mysqli_query($conn, $stuff);
此查询列出了角色超过0的所有用户。
require_once('link_to_script.php');
if (mysqli_num_rows($result) >1){
echo "Admin area";
}else{
echo "No Permissions";
}
这应该是自我解释(仅向角色高于1的用户显示“管理区域”)
我不知道我的错误是什么,我希望有人可以帮助我一点:)
答案 0 :(得分:0)
您可以在SQL查询中使用IN,例如,如果您需要管理员和主持人,请使用以下内容
SELECT * FROM `users` WHERE role IN ('2','3')
mysqli_num_rows 返回结果集中的行数。
if (mysqli_num_rows($result)){
echo "Admin and moderator area";
}else{
echo "No Permissions";
}
答案 1 :(得分:0)
您说的是要多于1行,您可能想说多于0行或仅1行...
if (mysqli_num_rows($result) >1){
应该是
if (mysqli_num_rows($result) >0){
或
if (mysqli_num_rows($result) == 1){
对于我知道这是不安全的-由于没有绑定参数,因此SQL不受任何输入的影响,因此在这种情况下安全性没有问题。但是您可能会希望在某个时候添加登录用户,这应该使用准备好的语句来完成。
答案 2 :(得分:0)
我现在通过以下方式获取当前用户:
$userID = $page->users->currentUserId();
$stuff = 'SELECT role FROM `users` WHERE id = $userID';
$result = mysqli_query($conn, $stuff;
if (mysqli_num_rows($result) >2){
....
正在抓取当前的userID,但如何将其与所需的角色进行比较?