0

データベースの同じ列にリストされている番号のグループ内の特定の番号をデータベースで検索するためのクエリが必要です。

データベースAccessには 2 つの列が含まれます

最初の列: ページ名

2列目:アクセス

そして、次のように設定されます: ページ名: ブログ管理者 アクセス: 60,61,62,76,83,94

ここで、列のアクセスの数字は、ページを表示できるランクです。

各ページには、ユーザーのランクを見つけて $URank 変数に格納するクエリがあります。

各ページは変数 ($PageName) で名前が付けられ、Accessデータベースの列ページ名と一致します

このクエリでは、列 Access でそのページ (ページ名 = $PageName) のユーザー ランクを検索する必要があります。

これをデータベースに保存することで、管理者はいつでも誰がどのページにアクセスできるかを変更できます。

ユーザーランクがそのページにアクセスする権限を持っていることを確認するためにデータベースを検索するクエリが必要なだけです。

これは非常に単純かもしれませんが、確かではありません。

私は mysql_query("select * from database where blahblah=viarable") などのクエリに慣れています...したがって、この形式で回答できれば素晴らしいと思います。それがmysqliと同等であっても。

4

1 に答える 1

1

編集:さて、あなたがしていることは、アクセス列に許可されたランクの文字列を保存しているように聞こえます。これは非常に悪い考えです。管理が難しく、PHPでは多くの追加作業が必要です。代わりに、次のように構造化された2つのテーブルを使用する必要があります。

create table Pages (
    id int primary key auto_increment,
    name varchar(200)
);

create table Page_access (
    page_id int,
    rank int
);

したがって、すべてのページのリスト(および他には何も)をPagesテーブルに保存しません。次に、 (テーブルからの)ページIDとそれらのページの受け入れられたユーザーランクのPage_accessすべての可能な組み合わせをテーブルに追加します。これは次のようになります。PagesPage_access

|page_id | rank |
|   1    |  60  |
|   1    |  61  |
|   1    |  62  |
|   2    |  70  |
|   2    |  71  |

...など。これは、テーブルに数百行になる可能性があることを意味します。これで問題ありません。これは正規化されたテーブルであり、列にインデックスを付けてもパフォーマンスは影響を受けません。

または、範囲内のランクを常に受け​​入れることがわかっている場合は、次のPage_accessようにテーブルを構成できます。

create table Page_access (
    page_id int,
    min_rank int,
    max_rant int
);

次に、SQLを使用して、ユーザーのランクがページの最小ランクと最大ランクの間にあるかどうかを確認しますbetween。これがテーブルの整理に役立つことを願っていますが、それでも元の質問(SQLステートメントの記述方法)に答えられないことはわかっています。良いテーブル構造が整っていることを確認し、実際のクエリを書いてみたら、別のより具体的な質問をすることをお勧めします。


元の答え:

使用していると仮定しますmysqli

#connect to your database
$mysqli = new mysqli('localhost', $database_username, $database_password, 'Access');

#prepare and run the query
if($stmt = $mysqli->prepare('select URank from Access where URank = ?')) {
    $stmt->bind_param('i', $URank);
    $stmt->execute();
    $stmt->bind_result($exists);
    $stmt->fetch();

    if($exists) {
        #the URank was found in the table
    } else {
        #not found
    }
    $stmt->close();
}

そのような何かがトリックを行う必要があります。上記の例を使用する前に、ステートメントmysqliを読んで準備することをお勧めします。データベースクエリを作成するときは、自分が何をしているのかを本当に理解する必要があります。

于 2012-10-18T17:37:54.773 に答える