在sql和php中更新多行
我有一个表,需要更新特定的行。用户勾选(使用复选框)要更新的值,然后将其作为数组(两个值)发送。然后需要在数据库中更改此值。问题是它使用相同的值更新两个值。我需要这两个值根据post数组中的内容而不同 我不确定是否应该使用联接?还是一个循环 如何更新来自复选框数组的多个值。我只想让它根据POST数组值更新这两个值。正确的值来自POST数组,因为我使用了var_dump在sql和php中更新多行,php,mysql,sql,Php,Mysql,Sql,我有一个表,需要更新特定的行。用户勾选(使用复选框)要更新的值,然后将其作为数组(两个值)发送。然后需要在数据库中更改此值。问题是它使用相同的值更新两个值。我需要这两个值根据post数组中的内容而不同 我不确定是否应该使用联接?还是一个循环 如何更新来自复选框数组的多个值。我只想让它根据POST数组值更新这两个值。正确的值来自POST数组,因为我使用了var_dump foreach($_POST['course_id'] as $course_id) { $update_query
foreach($_POST['course_id'] as $course_id) {
$update_query = "UPDATE course_student SET course_id='$course_id' WHERE student_id='$student_id' ORDER BY course_id";
$update_course_result = mysqli_query($connection,$update_query);
if($update_course_result && mysqli_affected_rows($connection)>0) {
echo "Success";
// more code here
}
}
诀窍是首先删除学生的所有条目,然后重新插入新检查的值:
DELETE FROM course_student WHERE student_id='$student_id'
然后在foreach循环中执行以下查询:
INSERT INTO course_student SET course_id='$course_id', student_id='$student_id'
这看起来像是一个“更新”,因为您删除了所有内容(也包括未检查的内容)。并插入所有新的选中条目
请注意上面评论中提到的SQL注入。我真的不明白你想问什么???你也可以发布html表单吗?我想这可能会让你更清楚你想做什么。另外,更新语句没有order by子句,请注意SQL注入……为什么要
order by
和update
查询?谢谢,伙计,我在读一些书,遇到了这个问题,现在将对它进行测试。问题是,当我这样做时,它再也不会被重新插入,它就不见了。此外,复选框必须是粘性的才能起作用吗?@LukeSmith“粘性”是什么意思?如果有人选中复选框并单击“提交”,则值仍存在错误。这是在删除查询后出现的我的foreach循环-foreach($\u POST['course\u id']as$course\u id){$query\u update=“插入课程\学生设置课程\ id='$course\ id',学生\ id='$student\ id'”;