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

特定のユーザーが存在するかどうかを確認するために、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 に答える
1

in_array()特定のアイテムが配列内にあるかどうかを確認するために探していると思います。

于 2012-10-13T13:07:02.267 に答える
1

in_array()ユーザー ID が配列に存在することだけを知る必要がある場合は、使用する必要があります。

しかし、実際に項目への参照が必要な場合は、http://au1.php.net/manual/en/function.array-search.php をarray_search() ご覧ください。

于 2012-10-13T13:08:52.070 に答える