2013-02-08 47 views
0

我有一個表events具有以下字段:檢查,如果某個特定的條目已經存在於MySQL的

`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(0<x<7)將是不同的特定event_idevents表。 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)誰已登錄並查看特定事件的頁面下,該事件的idevents表存在或不。對於特定的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; 
      } 
     } 
    } 

回答

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; 
    } 
} 
+0

請參閱我編輯的問題。 – xan 2013-02-08 13:20:54

+0

用循環編輯我的答案來檢查所有行 – tmuguet 2013-02-08 13:24:51

+0

這個'while'循環會在什麼時候終止?我的意思是,你確定它不會無限期地運行。 – xan 2013-02-08 13:32:36

0

您可以選擇並執行或查看是否有任何mem_X_id字段與當前用戶的ID匹配。這爲您節省了大量的處理。

相關問題