我在mysql中有一个表。此表的名称为questiontbl
。问题存储在此表中。一个问题随机显示给用户。这个问题不应重复。因此,用户ID被存储在一个名为uid
的列中。我有一些问题:
首先,问题显示多次而不是一次。
其次,uid
字段更新无法正常工作。例如,如果用户ID为40,并且必须向字段中添加一次,则会添加三次。
请检查我的代码并帮助我解决它的问题。
我的桌子:
问题标题由于要迭代uid
列中的所有值,以查看是否与会话id
的值匹配,因此会出现重复,每次值不匹配时,都会更新表。相反,在explode
设置值之后,使用in_array
查看会话id
值是否存在于uid
列中:
$uid2=$_SESSION['id'];
$get1 = "SELECT * FROM questiontbl ORDER BY RAND() LIMIT 1";
$get2=mysqli_query($conn,$get1);
$get3=mysqli_fetch_assoc($get2);
$questionid=$get3['id'];
$now=$get3['uid'];
$now2=explode(',',$now);
if (in_array($uid2, $now2)) {
header("Location: startnew.php");
}
else {
$final_show=$get3['questiontitle'];
echo $final_show;
$update_idq = "UPDATE questiontbl SET uid=concat(uid,",$uid2") WHERE id='$questionid' LIMIT 1";
mysqli_query($conn, $update_idq);
}
还要注意,变量替换只发生在双引号字符串中(并且您需要在id
值之前使用逗号(,因此您需要更改
SET uid=concat(uid,'$uid2,')
至
SET uid=concat(uid,",$uid2")
最后,您有一个拼写错误,LIMIT1
应该是LIMIT 1
,尽管该查询应该没有必要。