如何使用foreach和if语句验证用户只更新数据库表一次


how to verify a user update database table only once using foreach and if statement

在保持论坛问题的MySQL数据库表中,我有一个字段,它也保持用户ID的谁喜欢这个问题或不喜欢,例如,当按钮点击时正在更新列喜欢以这种格式1,2,3,4,5 .等…我想验证用户只能喜欢/不喜欢一个问题一次,因为我是php新手,我希望使用foreachif语句来检查用户ID是否已经在数据库列喜欢/不喜欢,如果没有更新,如果可用echo错误

如果我使用第一个代码没有得到任何东西,虽然数据在数据库中存在。

$nocast = htmlentities($_SESSION['user']['id'], ENT_QUOTES, 'UTF-8');
$likes = ("$row[likes]");
$dislikes = ("$row[dislikes]");
foreach($likes as $voters)
    if($likes == $nocast)
        echo("you already voted");
exit;

如果我使用第二个,我得到了我想要的,但问题是我不能直接输入数字。

$nocast = htmlentities($_SESSION['user']['id'], ENT_QUOTES, 'UTF-8');
$likes = ("1, 2, 3, 4, 5");
foreach($likes as $voters)
    if($likes == $nocast)
        echo("you already voted");
exit;

我不需要创建两个表,如果这是错误的,怎么做?

由于一个用户可以为多个问题投票,而一个问题可以由多个用户投票,因此您具有多对多关系。因此,您最好使用两个表。

这里访问数组键的基本语法是错误的:

$likes = ("$row[likes]");

应该是:

$likes = $row['likes'];

这就留下了一个问题,这个变量是否真的保存了你想要的数组,如果没有看到更多的代码,我们就无法判断。运行var_dump($likes);将很快显示