Javascript 在php中,根据桥接表中的用户id删除用户,sql不起作用?

Javascript 在php中,根据桥接表中的用户id删除用户,sql不起作用?,javascript,php,mysql,sql,Javascript,Php,Mysql,Sql,我正在创建一个函数,当学员被分配给其他教师时,教师可以删除他们的学员 教师表 +------+------+ | ID | name | +------+------+ | 101 | lili | | 201 | mey | +------+------+ 学生 +------+------+ |id_s | name | +------+------+ | s01 | aby | | s02 | miri | | 203 | ash | +------+------+

我正在创建一个函数,当学员被分配给其他教师时,教师可以删除他们的学员

教师表

+------+------+
| ID   | name |
+------+------+
|  101 | lili |
|  201 | mey  |
+------+------+
学生

+------+------+
|id_s  | name |
+------+------+
|  s01 | aby  |
|  s02 | miri |
|  203 | ash  |
+------+------+
学员

+------+--------+------+--+
| id   |id_stud |  id_tch |
+------+--------+----------
|  1   | s01    |   101   |
|  2   | s02    |   101   | 
|  3   | s02    |   201   |
+------+--------+---------+

我想删除桥接表中的学生id,其中id为
s01
,教师id为
101
。我不想删除整个学生信息。由于该学生仍然可用,因此只需将该学生分配给其他教师即可。这就是我创建delete函数的原因

这是我的展示台

<tr class="del_mentee<?php echo $fetch['id']?>">
    <td><center><?php echo "$i";$i++?></center></td>
    <td><center><?php echo $fetch['id']?></center></td>
    <td><?php echo $fetch['name']?></td>    
    <td><button class="btn btn-danger btn-delete" id="<?php echo $fetch['id']?>" type="button"><span class="glyphicon glyphicon-trash"></span></button></center></td>
</tr>

<script type="text/javascript">
$(document).ready(function(){
    $('.btn-delete').on('click', function(){
        var id = $(this).attr('id');
        $("#modal_confirm").modal('show');
        $('#btn_yes').attr('name', id);
    });
    $('#btn_yes').on('click', function(){
        var id = $(this).attr('name');
        $.ajax({
            type: "POST",
            url: "delete_mentee.php",
            data:{
                id: id
            },
            success: function(){
                $("#modal_confirm").modal('hide');
                $(".del_mentee" + id).empty();
                $(".del_mentee" + id).html("<td colspan='6'><center class='text-danger'>Deleting...</center></td>");
                setTimeout(function(){
                    $(".del_mentee" + id).fadeOut('slow');
                }, 1000);
            }
        });
    });
}); 
</script>

我没有发现任何错误,但不知何故,删除功能不起作用,我的删除查询正确吗?因为SQL不起作用,我不知道为什么它不起作用


我想得到一个结果,我可以删除我不再使用的特定学员。

如果您想从桥接器中删除整个记录,那么可以使用delete语句

delete from bridge where id_stud  = 's01' and id_tch = '101';
那么输出将是这样的

+------+--------+------+--+
| id   |id_stud |  id_tch |
+------+--------+----------
|  2   | s02    |   101   | 
|  3   | s02    |   201   |
+------+--------+---------+

在您的情况下,它应该是:

mysqli_query($conn, "DELETE FROM `mentee` WHERE `mentee`.`id` = '$_POST[id]'"));
或者没有背衬:

mysqli_query($conn, "DELETE FROM mentee WHERE mentee.id = '$_POST[id]'"));
请注意,当您使用

WHERE `mentee.id` = 123
它在
mentee
表中搜索
mentee.id
列,而不是实际需要的
id

在这种情况下,可以从查询中删除表前缀:

mysqli_query($conn, "DELETE FROM mentee WHERE id = '$_POST[id]'"));
另一件事是达曼在评论中提到的安全性。您应该避免直接从
$\u POST
传递数据,最简单的解决方案是:

$relationId = intval($_POST['id']);
mysqli_query($conn, "DELETE FROM mentee WHERE id = $relationId"));
自由思想:


另外,请尽量保留一些结果,即对
id
始终使用自动递增整数列,列名称保持小写。为了保持惯例,我建议的表格名称是
学生
教师
学生(教师)mm
,而不是
学员

你的桥牌表格名为学员还是桥牌?桥牌表格名为
学员
@dharman谢谢你,请像
mysqli\u query($,“从`mentee`WHERE`mentee`.`id`='”$\u POST['id'].“'””)中删除;
这会删除删除删除教师和学生之间的关系吗?我可以知道你为什么建议更新吗?根据此语句,“我想删除桥接表中的学生id,其中id为s01,教师id为101。我不想删除整个学生信息。“我相信你想要这样的输出?是的,因为桥接是连接教师和学生的表,所以关系被删除。使用第一种方法,关系被破坏,而不是删除。一段时间后,它将导致大量无效行。相反,我建议采用第二种解决方案,即真正删除行。哦,我的意思是我想删除桥接表中的行,但我仍然想确保学生数据在学生表中可用。我想删除桥接表中id
1
的整行。有可能做到吗?@kokobty哦,我知道第二种解决方案会奏效。
$relationId = intval($_POST['id']);
mysqli_query($conn, "DELETE FROM mentee WHERE id = $relationId"));