Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在sql和php中更新多行_Php_Mysql_Sql - Fatal编程技术网

在sql和php中更新多行

在sql和php中更新多行,php,mysql,sql,Php,Mysql,Sql,我有一个表,需要更新特定的行。用户勾选(使用复选框)要更新的值,然后将其作为数组(两个值)发送。然后需要在数据库中更改此值。问题是它使用相同的值更新两个值。我需要这两个值根据post数组中的内容而不同 我不确定是否应该使用联接?还是一个循环 如何更新来自复选框数组的多个值。我只想让它根据POST数组值更新这两个值。正确的值来自POST数组,因为我使用了var_dump foreach($_POST['course_id'] as $course_id) { $update_query

我有一个表,需要更新特定的行。用户勾选(使用复选框)要更新的值,然后将其作为数组(两个值)发送。然后需要在数据库中更改此值。问题是它使用相同的值更新两个值。我需要这两个值根据post数组中的内容而不同

我不确定是否应该使用联接?还是一个循环

如何更新来自复选框数组的多个值。我只想让它根据POST数组值更新这两个值。正确的值来自POST数组,因为我使用了var_dump

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'”;