我有一个表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;
}
}
}
答案 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匹配。这为您节省了大量的处理时间。