在mysql中设置字段的查询是什么

时间:2012-06-10 02:05:34

标签: mysql crud

我需要为我的项目提供一项功能。有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'”和.....;

请帮帮我。

2 个答案:

答案 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的情况下工作,只需要在某些情况下执行。所以也许你想留下你所拥有的东西。