編集:さて、あなたがしていることは、アクセス列に許可されたランクの文字列を保存しているように聞こえます。これは非常に悪い考えです。管理が難しく、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
すべての可能な組み合わせをテーブルに追加します。これは次のようになります。Pages
Page_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
を読んで準備することをお勧めします。データベースクエリを作成するときは、自分が何をしているのかを本当に理解する必要があります。