检查MySQL中是否已存在特定条目

时间:2013-02-08 13:13:17

标签: php mysql sql session search

我有一个表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

对于mem_x_id TABLE中的特定(0<x<7),所有event_id events都是不同的。 id是通常使用的主键。一个可能的例子:

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(来自users TABLE)是否已登录并正在查看特定事件的页面是否存在于events TABLE中在该事件的id下。特定event_id可能有多个条目 。我想搜索事件页面中的所有event_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;
            }
        }
    }

2 个答案:

答案 0 :(得分: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;
    }
}

答案 1 :(得分:0)

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