微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 MySQL 和 PHP 从多个表中删除记录

如何解决使用 MySQL 和 PHP 从多个表中删除记录

我正在尝试使用 sql 删除 PHP 网站中的多个相关记录。我环顾四周,似乎对我的数据库没有任何作用。本质上,在我的站点中,我单击了一个按钮,该按钮将删除用户的帐户。这意味着我必须从 users 表中删除 USER_ID,从帐户表中删除 Users_USER_ID,从事务表中删除 ACCOUNTS_ACCOUNTS_ID。到目前为止,这是我的 delete.PHP 页面

<?PHP

include "includes/server.PHP"; // Using database connection file here
session_start();

$id = $_SESSION['userid']; // get session user id

$sql = "DELETE FROM users WHERE USER_ID = '$id'";
$sql2 = "DELETE FROM transactions WHERE ACCOUNTS_ACCOUNTS_ID = 14";
$sql3 = "DELETE FROM accounts WHERE Users_USER_ID = '$id'";

$del = MysqLi_query($conn,$sql);
$del2 = MysqLi_query($conn,$sql2);
$del3 = MysqLi_query($conn,$sql3);

if (($del && $del2) || ($del && $del2 && $del3) || ($del && $del3) || ($del)) {
    MysqLi_close($conn); // Close connection
    header("location:index.PHP"); // redirects to index page
    exit;
} else {
    echo "Error deleting record"; // display error message if not delete
}

这是我创建三个表的 sql 方案:

    DROP TABLE IF EXISTS `accounts`;
    /*!40101 SET @saved_cs_client     = @@character_set_client */;
    /*!50503 SET character_set_client = utf8mb4 */;
    CREATE TABLE `accounts` (
      `ACCOUNTS_ID` int NOT NULL AUTO_INCREMENT,`ACCOUNT_BALANCE` float NOT NULL DEFAULT '0',`Users_USER_ID` int NOT NULL,`Account_TYPE_ACCOUNT_TYPE_ID` int NOT NULL,PRIMARY KEY (`ACCOUNTS_ID`),KEY `fk_ACCOUNTS_Users1_idx` (`Users_USER_ID`),KEY `fk_ACCOUNTS_Account_TYPE1_idx` (`Account_TYPE_ACCOUNT_TYPE_ID`),CONSTRAINT `fk_ACCOUNTS_Account_TYPE1` FOREIGN KEY (`Account_TYPE_ACCOUNT_TYPE_ID`) REFERENCES `account_type` (`ACCOUNT_TYPE_ID`),CONSTRAINT `fk_ACCOUNTS_Users1` FOREIGN KEY (`Users_USER_ID`) REFERENCES `users` (`USER_ID`)
    ) ENGINE=InnoDB AUTO_INCREMENT=18 DEFAULT CHARSET=utf8;

DROP TABLE IF EXISTS `transactions`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!50503 SET character_set_client = utf8mb4 */;
CREATE TABLE `transactions` (
  `TRANSACTIONS_ID` int NOT NULL AUTO_INCREMENT,`AMOUNT_OF_TRANSACTION` float NOT NULL,`TRANSACTION_APPRoval` varchar(45) CHaraCTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,`TRANSACTION_FROM` varchar(45) NOT NULL,`TRANSACTION_TO` varchar(45) NOT NULL,`ACCOUNTS_ACCOUNTS_ID` int NOT NULL,`TRANSACTION_TYPE_TRANSACTION_TYPE_ID` int NOT NULL,PRIMARY KEY (`TRANSACTIONS_ID`),KEY `fk_TRANSACTIONS_ACCOUNTS1_idx` (`ACCOUNTS_ACCOUNTS_ID`),KEY `fk_TRANSACTIONS_TRANSACTION_TYPE1_idx` (`TRANSACTION_TYPE_TRANSACTION_TYPE_ID`),CONSTRAINT `fk_TRANSACTIONS_ACCOUNTS1` FOREIGN KEY (`ACCOUNTS_ACCOUNTS_ID`) REFERENCES `accounts` (`ACCOUNTS_ID`),CONSTRAINT `fk_TRANSACTIONS_TRANSACTION_TYPE1` FOREIGN KEY (`TRANSACTION_TYPE_TRANSACTION_TYPE_ID`) REFERENCES `transaction_type` (`TRANSACTION_TYPE_ID`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;


DROP TABLE IF EXISTS `users`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!50503 SET character_set_client = utf8mb4 */;
CREATE TABLE `users` (
  `USER_ID` int NOT NULL AUTO_INCREMENT,`USER_TYPE_USER_TYPE_ID` int NOT NULL,`USER_NAME` varchar(45) NOT NULL,`PASSWORD` varchar(128) CHaraCTER SET utf8 COLLATE utf8_general_ci NOT NULL,`FirsT_NAME` varchar(45) NOT NULL,`LAST_NAME` varchar(45) NOT NULL,`EMAIL_ADDRESS` varchar(45) NOT NULL,PRIMARY KEY (`USER_ID`)
) ENGINE=InnoDB AUTO_INCREMENT=27 DEFAULT CHARSET=utf8;
/*!40101 SET character_set_client = @saved_cs_client */;

我一直在想办法把它放在 delete.PHP 中的一个 sql 语句或多个语句中,但我没有运气。任何帮助将不胜感激!

更新:我尝试了以下操作,但仍然没有删除记录:

$sql = "DELETE users,accounts,transactions 
    FROM users
    LEFT JOIN accounts on (accounts.Users_USER_ID = users.USER_ID)
    LEFT JOIN transactions on (transactions.ACCOUNTS_ACCOUNTS_ID = accounts.ACCOUNTS_ID)
    WHERE users.USER_ID = '$id'";

$del = MysqLi_query($conn,$sql);

if ($del ) {
    MysqLi_close($conn); // Close connection
    header("location:index.PHP"); // redirects to index page
    exit;
} else {
    echo "Error deleting record"; // display error message if not delete
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。