0

我正在开发一个管理面板,如果 PDO 查询返回管理表中的所有管理员并且用户 ID 与管理员 ID 结果中的 1 个匹配,则代码将在其中显示不同。只有可以有无限数量的管理员,我不想为每个人编辑代码。

是否可以这样做(伪代码):

if($userid isfoundin $result['admin_user_id']{ -- admin code here }

我还没有编写管理表,因为我想先了解更多信息,但是如果我循环浏览用户表并查找 id,$query->fetchAll()那么我会得到这个:

   array(30) { [0]=> array(2) { ["id"]=> string(1) "7" [0]=> string(1) "7" } [1]=> array(2) { ["id"]=> string(1) "6" [0]=> string(1) "6" } [2]=> array(2) { ["id"]=> string(1) "8" [0]=> string(1) "8" } [3]=> array(2) { ["id"]=> string(2) "31" [0]=> string(2) "31" } [4]=> array(2) { ["id"]=> string(2) "26" [0]=> string(2) "26" } [5]=> array(2) { ["id"]=> string(1) "4" [0]=> string(1) "4" } [6]=> array(2) { ["id"]=> string(2) "35" [0]=> string(2) "35" } [7]=> array(2) { ["id"]=> string(2) "21" [0]=> string(2) "21" } [8]=> array(2) { ["id"]=> string(2) "38" [0]=> string(2) "38" } [9]=> array(2) { ["id"]=> string(2) "24" [0]=> string(2) "24" } [10]=> array(2) { ["id"]=> string(2) "34" [0]=> string(2) "34" } [11]=> array(2) { ["id"]=> string(2) "20" [0]=> string(2) "20" } [12]=> array(2) { ["id"]=> string(2) "19" [0]=> string(2) "19" } [13]=> array(2) { ["id"]=> string(2) "23" [0]=> string(2) "23" } [14]=> array(2) { ["id"]=> string(2) "33" [0]=> string(2) "33" } [15]=> array(2) { ["id"]=> string(2) "28" [0]=> string(2) "28" } [16]=> array(2) { ["id"]=> string(1) "3" [0]=> string(1) "3" } [17]=> array(2) { ["id"]=> string(2) "15" [0]=> string(2) "15" } [18]=> array(2) { ["id"]=> string(1) "9" [0]=> string(1) "9" } [19]=> array(2) { ["id"]=> string(2) "25" [0]=> string(2) "25" } [20]=> array(2) { ["id"]=> string(1) "1" [0]=> string(1) "1" } [21]=> array(2) { ["id"]=> string(2) "32" [0]=> string(2) "32" } [22]=> array(2) { ["id"]=> string(1) "5" [0]=> string(1) "5" } [23]=> array(2) { ["id"]=> string(2) "18" [0]=> string(2) "18" } [24]=> array(2) { ["id"]=> string(2) "29" [0]=> string(2) "29" } [25]=> array(2) { ["id"]=> string(2) "27" [0]=> string(2) "27" } [26]=> array(2) { ["id"]=> string(2) "30" [0]=> string(2) "30" } [27]=> array(2) { ["id"]=> string(2) "22" [0]=> string(2) "22" } [28]=> array(2) { ["id"]=> string(2) "10" [0]=> string(2) "10" } [29]=> array(2) { ["id"]=> string(2) "36" [0]=> string(2) "36" } }

这就是我现在正在尝试使用的东西

require_once $_SERVER['DOCUMENT_ROOT']."/resources/settings.php";
$query = $pdo->prepare("SELECT id FROM users");
$query->execute();
var_dump($query->fetchAll());
if (in_array($user['id'], $query->fetchAll())){
    echo $user['id'];
}
4

4 回答 4

4

是的,您可以使用in_array()它。

我假设您有一组管理员用户。说,它是:

$adminUsers = array("admin", "administrator");
# Or by your code
$adminUsers = $result['admin_user_id'];

现在代码部分是这样的:

if (in_array($userid, $adminUsers))
    // Admin code here
于 2012-10-13T13:06:43.387 回答
1

我认为您正在寻找in_array()给定项目是否在数组中。

于 2012-10-13T13:07:02.267 回答
1

in_array()如果您只需要知道用户 ID 存在于您的阵列中,则应该使用。

但如果您确实需要对该项目的引用,请查看array_search() http://au1.php.net/manual/en/function.array-search.php

于 2012-10-13T13:08:52.070 回答
1

与其遍历 admins 表中的所有用户,然后再进行另一个循环以查找特定用户是否存在,为什么不在查询本身中进行此检查呢?

例如:

$stmt = $mysqli->prepare("SELECT name,email FROM admins WHERE id=?");
$stmt->bind_param("d", $user_id);
$stmt->execute();
$stmt->bind_result($name, $email);

    if ($stmt->fetch()) {
        //The user with user_id exists in the admins table , show him the admin panel.
        //You can use $name and $email.
    }

$stmt->close();
于 2012-10-13T13:26:30.547 回答