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。我不想删除整个学生信息。“我相信你想要这样的输出?是的,因为桥接是连接教师和学生的表,所以关系被删除。使用第一种方法,关系被破坏,而不是删除。一段时间后,它将导致大量无效行。相反,我建议采用第二种解决方案,即真正删除行。哦,我的意思是我想删除桥接表中的行,但我仍然想确保学生数据在学生表中可用。我想删除桥接表中id1
的整行。有可能做到吗?@kokobty哦,我知道第二种解决方案会奏效。
$relationId = intval($_POST['id']);
mysqli_query($conn, "DELETE FROM mentee WHERE id = $relationId"));