Php 从数据库中的多个表中删除数据

Php 从数据库中的多个表中删除数据,php,database,sql-delete,Php,Database,Sql Delete,我一直在想如何从数据库中的多个表中删除数据。为了提供一些背景信息,有一个用户表包含基本信息,如名字和姓氏。然后是一个包含密码和用户名的登录表。我正在制作一个管理员页面,允许我查看包含两个表中信息的用户列表。那部分很好用。我的问题是尝试创建删除脚本。 我试着提出不同的问题,但我一事无成。有人能告诉我一些方向吗?或者至少在某个地方我可以读到这个 // Get IDs $lid = $_POST['lid']; $uid = $_POST['uid']; // Delete the product

我一直在想如何从数据库中的多个表中删除数据。为了提供一些背景信息,有一个用户表包含基本信息,如名字和姓氏。然后是一个包含密码和用户名的登录表。我正在制作一个管理员页面,允许我查看包含两个表中信息的用户列表。那部分很好用。我的问题是尝试创建删除脚本。 我试着提出不同的问题,但我一事无成。有人能告诉我一些方向吗?或者至少在某个地方我可以读到这个

// Get IDs
$lid = $_POST['lid'];
$uid = $_POST['uid'];

// Delete the product from the database
require_once('database.php');

$query = "DELETE user,login FROM user INNER JOIN login ON user.uid = '$uid' AND login.lid= '$lid'";
 $db->exec($query);

添加一个外键,然后在列定义中使用ON DELETE CASCADE,这将在删除父行时负责删除子行

这将取决于数据库(以及可能存在的约束)是否可以在单个DML语句中执行此操作。不过,更简单的选择通常是使用两个DML语句执行类似的操作

$query = "DELETE FROM user WHERE user.uid = '$uid'";
$db->exec($query);
$query = "DELETE FROM login WHERE login.lid= '$lid'";
$db->exec($query);

在DELETE中不能进行那样的连接。只需使用两个DELETE语句。使用级联的外键,这样当您删除一个用户时,与该用户相关的所有数据也会自动删除。请记住,您不必进行硬删除。表中可以有一个字段,用于记录记录是否已被删除。执行删除操作时,只需更新字段中的值。可以调用已删除的字段,如果值为0,则该字段处于活动状态,如果值为1,则该字段已删除。这样,如果你不想删除数据,你就可以恢复数据。我从来没有想过要这么做。我想我现在就试试看。非常感谢+1-但是,这假设所使用的数据库支持带有级联删除的外键(例如,并非所有MySQL存储引擎都支持),并且表之间存在外键关系——问题不包括任何表示两个表共享一个键的谓词。非常感谢!我读了它,我明白了。我让代码工作了。