在php中使用concat、foreach和explore显示问题时出现的问题



我在mysql中有一个表。此表的名称为questiontbl。问题存储在此表中。一个问题随机显示给用户。这个问题不应重复。因此,用户ID被存储在一个名为uid的列中。我有一些问题:

首先,问题显示多次而不是一次。

其次,uid字段更新无法正常工作。例如,如果用户ID为40,并且必须向字段中添加一次,则会添加三次。

请检查我的代码并帮助我解决它的问题。

我的桌子:

问题标题5问题A19,40,15,17,6问题B19,

由于要迭代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,尽管该查询应该没有必要。

最新更新