0

我的项目需要一个功能。有3个mysql表。

Requests -  request_id, request_msg, user_id, request_datetime
Responses - response_id, request_id, response_msg, user_id, response_datetime, readflag
Users-      user_id, user_email, user_name

用户发布请求并获取其他用户的响应。[非常类似于stackoverflow网站]

响应表中的 readflag 指示该响应是否被发布与其关联的请求的用户读取?

0- NOT READ, 1-READ

最初这个字段是0,我想把它标记为1。

同一页面上列出的所有请求。当用户点击一个请求时,与该请求相关的所有响应都将列在其他页面上。

任何用户都可以阅读任何用户的请求和响应。当发布请求的用户读取与其关联的响应时,我只想将这些响应标记为 readflag=1;

“更新响应 SET readflag = 1 WHERE request_id = '$request_id'” 和.....;

请帮帮我。

4

2 回答 2

1

要更新这些记录,您首先需要有一个存储用户 ID 的变量,然后检查请求是否属于该用户。如果是这样,请更新该请求的所有响应。

$userID = "devesh";
$requestOwner = "devesh";

if ($userID == $requestOwner) {
    $qry = "UPDATE responses SET readflag = 1 WHERE request_id = '$request_id';
    // Execute query here
}
于 2012-06-10T03:33:08.080 回答
0

如果您已经显示了一个请求并且它是响应,我建议您已经知道 request_id 和 user_id。如果 user_id 属于 request_id,则 user_id 属于创建请求的用户。因此,如果你写

UPDATE Responses AS Res JOIN Requests as Req USING (request_id)
SET Req.readflag = 1
WHERE Res.request_id = '$request_id'
AND Res.user_id = '$user_id'

我在这里使用表的别名来区分 Req.user_id 和 Res.user_id。如果 Request 表中没有 request_id = '$request_id' 和 user_id = '$user_id' 的记录,则不会更新任何响应。

我认为 saluce 的答案可能会更快,因为它可以在没有 JOIN 的情况下工作,并且只需要在某些情况下执行。所以也许你想留下你所拥有的。

于 2012-06-10T02:17:49.533 回答