Php 如何在多个用户输入后更新同一行?
我有一组问题,当用户按钮根据值[0或1]单击其中一个单选按钮时,表格会更新。现在发生的情况是,当用户单击某个问题的单选按钮时,该值将插入到数据库中,但当另一个用户单击该问题的单选按钮时,将插入另一行,而不是更新该行 下面的代码设置问题和单选按钮Php 如何在多个用户输入后更新同一行?,php,mysql,Php,Mysql,我有一组问题,当用户按钮根据值[0或1]单击其中一个单选按钮时,表格会更新。现在发生的情况是,当用户单击某个问题的单选按钮时,该值将插入到数据库中,但当另一个用户单击该问题的单选按钮时,将插入另一行,而不是更新该行 下面的代码设置问题和单选按钮 $sql1 = mysqli_query($connection,"SELECT * FROM list WHERE id='$data' LIMIT 1"); while($row = mysqli_fetch_array($sql1)){ $
$sql1 = mysqli_query($connection,"SELECT * FROM list WHERE id='$data' LIMIT 1");
while($row = mysqli_fetch_array($sql1)){
$id = $row['id'];
$a = $row['data'];
$data_id = $row['data_id'];
$first = '<h2>'.$a.'</h2>';
$sql2 = mysqli_query($connection,"SELECT * FROM replies WHERE d_id='$data'");
while($row2 = mysqli_fetch_array($sql2)){
$ch = $row2['reply'];
$val = $row2['val'];
$replies .= '<label><input type="radio" name="radio" onclick = "vote()" value="'.$val.'">'.$ch.'</label>
<input type="hidden" id="did" value="'.$id.'" name="did">
';
}
$displ = ''.$first.','.$answers.',<input type = "submit" name = "submit" value="submit" onClick = "post_reply()">';
echo $displ;
}
桌子可能看起来像这样。所以第二行也是和第一行一样的问题
id----|----question_id----|----corect---|---wrong---
1 1 1 0
2 2 0 1
所以我想避免的是为同一个问题插入另一行,而不是我想更新它,所以它看起来像这样:
id----|----question_id----|----corect---|---wrong---
1 1 3 1
2 2 2 2
可以为下一个问题插入另一行。在上表中,第二行是一个不同的问题
编辑
这就是问题表的外观
id----|----question_id----|----question-------|---type--------
1 1 ...a.. tf
2 2 ....b... tf
答案表
-------id----|----question_id----|----answer-------|---correct--------
1 1 False 0
2 1 True 1
3 2 False 1
4 2 True 0
0/1表示答案是对还是错。删除此部分:
if($q == 1){
$sql="INSERT INTO stats (correct,wrong) VALUES (1,0)";
} else {
$sql="INSERT INTO stats (correct,wrong) VALUES (0,1)";
//$sql = "UPDATE stats SET correct = correct + 0, wrong = wrong + 4 WHERE id = 1 LIMIT 1";
}
然后找到一种方法来获取该问题和用户是否有统计数据?我看不见那张桌子,实在帮不上忙
-从stats表中选择id,该id连接到您无法看到所需代码部分的条件。将正确的id返回到$lastId变量,而不是新插入的结果
-如果该问题的stat不存在,选择结果为空,fetch语句返回false/null、$lastId为false/null等,然后插入stats表,将正确答案和错误答案设置为零
另外,将最后一行之前的行替换为以加号开头的行:
-mysqli_query($con, "UPDATE stats SET question_id='$lastId' WHERE id='$lastId' LIMIT 1");
+if ($q == 1) {
+ mysqli_query($con, "UPDATE stats SET correct += 1 WHERE id='$lastId'");
+} else {
mysqli_query($con, "UPDATE stats SET wrong += 1 WHERE id='$lastId'");
+}
您好,谢谢您的帮助,但是当我按照您建议的方式尝试时,没有任何内容进入数据库。另外,如果它是一个空的DB,你能用更新语句插入数据吗?抱歉,不能正确地格式化我的答案,但是我试图解释在中间部分,你需要创建一个流= =为自己写,它决定你是否需要选择和更新,或者你也需要插入,除非我对任务中的统计数据、问题和用户表了解更多,否则您需要自己编写。稍后您还将了解PHP框架自动执行这些操作,但在此之前,不幸的是您需要手动处理这些操作。我现在只是以非用户的身份测试它们。谢谢你的帮助。嗯,不太清楚任务是什么。但是,如果您离开当前代码,忘记我的代码,并且在从统计表中查询数据时,您稍后为用户请求SUMcorrect和sumError,那么它仍然可以工作。或者,如果统计表只是为了收集回答错误或正确的人数,那么请从统计表中选择id,其中问题id=$YouAreGettingThis from AnarlierVarinthecode,如果不存在,请在值中插入问题id,0,0感谢您的帮助。不过,如果所有其他方法都失败,我正在考虑进行求和。
-mysqli_query($con, "UPDATE stats SET question_id='$lastId' WHERE id='$lastId' LIMIT 1");
+if ($q == 1) {
+ mysqli_query($con, "UPDATE stats SET correct += 1 WHERE id='$lastId'");
+} else {
mysqli_query($con, "UPDATE stats SET wrong += 1 WHERE id='$lastId'");
+}