0

我有一个events包含以下字段的表:

`id`-->INT,PRIMARY AND AUTO_INCREMENT
`event_id`-->INT
`mem_1_id`-->INT
`mem_2_id`-->INT
`mem_3_id`-->INT
`mem_4_id`-->INT
`mem_5_id`-->INT
`mem_6_id`-->INT

对于TABLEmem_x_id (0<x<7)中的特定内容,所有这些都是不同event_id的。是通常使用的主键eventsid一个可能的例子:

id  event_id    mem_1_id    mem_2_id    mem_3_id    mem_4_id    mem_5_id    mem_6_id
1   11          123         345         567         67          34          56
2   12          234         555         67          43          23          12
2   12          34          55          167         435         233         122

现在我想检查已经登录并正在查看特定事件页面的用户id(来自TABLE)在该事件的. 一个特定的 可能有多个条目 。我想搜索活动页面的所有内容。userseventsidevent_idevent_id

我的代码如下: 请注意,我是 PHP 新手,因此仍在使用旧版本。我计划让事情正常进行,然后将我的代码修改为 PDO。我正在并行学习 PDO。但首先我想让我的代码工作。

$id=stores the event_id of the event page that the user is viewing.

$_SESSION['id']=`id` of the user that is logged in and viewing the page.

if(isset($_SESSION['id'])){
    $result1=mysql_query("SELECT id FROM events WHERE event_id='".$id."')");
        if ($result1 == false) {
            echo mysql_error();
            die;
        }
        $row1 = mysql_fetch_assoc($result1);

        if($row1['id']){
            if ($_SESSION['id']==$row1['mem_1_id'] || $_SESSION['id']==$row1['mem_2_id'] || $_SESSION['id']==$row1['mem_3_id'] || $_SESSION['id']==$row1['mem_4_id'] || $_SESSION['id']==$row1['mem_5_id'] || $_SESSION['id']==$row1['mem_6_id']){
                $is_already_regis=1;
            }
        }
    }
4

2 回答 2

0

在您的查询中,您必须选择要使用的所有字段:

"SELECT id, mem_1_id, mem_2_id, [...], mem_6_id FROM events WHERE event_id='".$id."'"

然后,您必须使用循环来检查每一行:

while ($row = mysql_fetch_assoc($result1)) {
    if ($_SESSION['id']==$row['mem_1_id'] || $_SESSION['id']==$row['mem_2_id'] || $_SESSION['id']==$row['mem_3_id'] || $_SESSION['id']==$row['mem_4_id'] || $_SESSION['id']==$row['mem_5_id'] || $_SESSION['id']==$row['mem_6_id']){
            $is_already_regis=1;
    }
}
于 2013-02-08T13:16:40.923 回答
0

您可以选择并执行 or 来查看是否有任何 mem_X_id 字段与当前用户的 id 匹配。这为您节省了大量的处理时间。

于 2013-02-08T13:18:34.950 回答