这个问题已经在这里有了答案:????????????>????????????How to delete from multiple tables in MySQL?????????????????????????????????????6个
我正在从多个表中的dB中删除数据.我正在使用模式确认(删除)的方式将数据用户名发送到delete-member.php:
$('.delete-button').on('click', function (e) {
var username = $(this).attr('data-id');
$('.confirm-delete').attr('data-id',username);
});
$(".confirm-delete").on('click', function (e) {
var username = $(this).attr('data-id');
console.log(username);
//Ajax for deleting category
$.ajax({
url: 'handlers/delete_member.php',
type: 'GET',
data: {username: username},
error: function() {
alert('Something went wrong');
},
success: function(data) {
console.log("Member Deleted");
}
});
location.href="site_members.php?username="+username;
});
在这里一切正常,我$_GET用户名并删除数据.我面临的挑战是该特定用户使用该系统已有一段时间了.为了对该用户进行硬删除,我需要执行mk.确保在多个表中删除了用户名.确切地说是15.
使用准备好的语句,我着手删除每次出现的内容,如下所示:
if(isset($_GET["username"])) {
$userFromURL = $_GET["username"];
//delete member information from users
global $con;
$delete_mbrQ = mysqli_prepare($con, "DELETE FROM users WHERE username=?");
$delete_mbrQ->bind_param("s", $userFromURL);
$delete_mbrQ->execute();
$delete_mbrQ->close();
//delete member posts
$delete_postsQ = mysqli_prepare($con, "DELETE FROM posts WHERE added_by=?");
$delete_postsQ->bind_param("s", $userFromURL);
$delete_postsQ->execute();
$delete_postsQ->close();
//delete messages
$del_msgsQ = mysqli_prepare($con, "DELETE FROM messages WHERE user_to=? OR user_from=?");
$del_msgsQ->bind_param("ss", $userFromURL, $userFromURL);
$del_msgsQ->execute();
$del_msgsQ->close();
等等…(我不会全部放15张,但是您会领会到这一点)我对出现用户名且工作正常的所有15张桌子都这样做了.但是,看看这大段重复代码,我想知道是否有更有效的方法来做到这一点?我可以将其合并为一个或两个语句来实现相同的目的吗?
我一直在对此进行研究,但是我读过的大多数书都更多地讨论了设置外键的问题,在某些情况下我已经做了,但显然并非如此.对于预准备语句和列名不同的实例,我也找不到很多.任何帮助,示例,链接等,将不胜感激.