我需要为我的项目提供一项功能。有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'”和.....;
请帮帮我。
答案 0 :(得分:1)
要更新这些记录,您需要先拥有一个存储userID的变量,然后检查该请求是否属于该用户。如果是,请更新该请求的所有响应。
$userID = "devesh";
$requestOwner = "devesh";
if ($userID == $requestOwner) {
$qry = "UPDATE responses SET readflag = 1 WHERE request_id = '$request_id';
// Execute query here
}
答案 1 :(得分: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的情况下工作,只需要在某些情况下执行。所以也许你想留下你所拥有的东西。