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 を表示しており、それが Response である場合は、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' のレコードがない場合、応答は更新されません。

salice による回答は、JOIN なしで機能し、場合によっては実行するだけでよいため、より高速になる可能性があると思います。だから多分あなたはあなたが持っているものにとどまりたいと思うでしょう.

于 2012-06-10T02:17:49.533 に答える