我试图通过将记录插入数据库来向用户帐户发送通知,并使用true或false指示该记录是否已被查看。问题是当第一个用户看到通知时,数据库中的记录变为true,然后其他用户无法看到它。这是我的下面的代码
if($_POST["view"] != '')
{
$update_query = "UPDATE notifier SET n_status=1 WHERE n_status=0";
mysqli_query($conn, $update_query);
}
答案 0 :(得分:0)
您需要添加一列以将通知链接到用户表,因此notifier
表应该看起来像(这是一个示例,可以根据需要进行调整);
create table "user"(
id uuid default public.uuid_generate_v4() not null
);
create table "notifier"(
id uuid default public.uuid_generate_v4() not null,
user_id uuid references user(id) not null,
n_status int not null default 0
);
现在,当您向ID为852f5ea9-0bad-4c0f-aab8-00479eae026f
的用户添加通知时:
insert into "notifier" (id, user_id, n_status)
values (public.uuid_generate_v4(), '852f5ea9-0bad-4c0f-aab8-00479eae026f', 0);
然后,当该用户阅读ID为ddf5fb8f-3100-4860-a61e-bae2a1393a8e
的通知时,您可以更改通知状态。
update "notifier" set n_status = 1
where user_id = '852f5ea9-0bad-4c0f-aab8-00479eae026f'
and id = 'ddf5fb8f-3100-4860-a61e-bae2a1393a8e'
为了安全起见,我认为最好通过id
(来自客户端)来更改状态,并添加user_id
(如果您具有正确的身份验证,则客户端无法伪造)。