Php 使用MyISAM从多个表中删除

Php 使用MyISAM从多个表中删除,php,mysql,sql,join,Php,Mysql,Sql,Join,我已经尝试了很多组合,但似乎没有一个有效= 我有以下两个SQL命令: $sql = "DELETE FROM infogt2000_partner_lead_invoice WHERE infogt2000_partner_lead_invoice_lead_id = ".$id_invoice; $sql = "DELETE FROM infogt2000_partner_lead WHERE infogt2000_partner_lead_id = ".$id; 他们必须一起执行。嗯,如

我已经尝试了很多组合,但似乎没有一个有效=

我有以下两个SQL命令:

$sql = "DELETE FROM infogt2000_partner_lead_invoice WHERE infogt2000_partner_lead_invoice_lead_id = ".$id_invoice;
$sql = "DELETE FROM infogt2000_partner_lead  WHERE infogt2000_partner_lead_id = ".$id;
他们必须一起执行。嗯,如果我从partner_lead中删除信息,它还必须从infogt2000_partner_lead_发票中删除相同的信息。 infogt2000_partner_lead_id和infogt2000_partner_lead_invoice_lead_id中的id相同,但我无法正确写入


我目前使用MySQL,类型是MyISAM

。您应该考虑将数据库表转换为YNODB,这样就可以创建外键约束来在Delphi上级联。否则,您必须编写多个查询,从层次结构链中最低的项开始,一直到最父表。例如:先删除孙子,然后删除子代,然后删除父代。

I您需要使用内部联接:

DELETE infogt2000_partner_lead_invoice, infogt2000_partner_lead
FROM infogt2000_partner_lead_invoice
INNER JOIN infogt2000_partner_lead
WHERE infogt2000_partner_lead_invoice.infogt2000_partner_lead_invoice_lead_id = infogt2000_partner_lead.infogt2000_partner_lead_id
AND infogt2000_partner_lead_invoice_lead_id = $id

你能改用InnoDB吗?你熟悉外键吗?级联外键是只执行一个查询来做你想做的事情的正确方法。否则,您将需要运行2个查询。您是在这两个sql语句之后使用mysqli_查询还是类似的调用?你能展示这两个语句的代码吗?我做到了。第一个命令是子表,另一个是父表,但当它执行时,只有父表被删除当您从infogt2000\u partner\u lead\u invoice中选择*时会发生什么情况,其中infogt2000\u partner\u lead\u invoice\u lead\u id=.$id\u invoice;-你看到数据了吗?InnoDB的另一个好处是它是事务性的,因此,如果任何查询失败,你可以回滚以确保数据完整性。我可以询问它是否可以转换,但我不相信公司会改变它。。。