编辑:好的,听起来您正在做的是在 Access 列中存储一串允许的等级。这是一个非常糟糕的主意。它很难管理,并且需要在 PHP 中进行大量额外的工作。你应该做的是使用两个表,结构如下:
create table Pages (
id int primary key auto_increment,
name varchar(200)
);
create table Page_access (
page_id int,
rank int
);
因此,您将在表中存储所有页面(仅此而已)的Pages
列表。然后,将Page_access
所有可能的页面 ID 组合(来自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
并准备好声明。在编写数据库查询时,您确实需要了解自己在做什么。