我能找到的只有Joins和Inner Joins的答案,
$sql= "DELETE FROM `Item` WHERE `ItemID`='$_POST[id]';
DELETE FROM `Info` WHERE `Item_ItemID`='$_POST[id]';
DELETE FROM `ListPics` WHERE `Item_ItemID`='$_POST[id]';";
这给了我一个错误。
Error: You have an error in your SQL syntax; check the manual that corresponds to your
MySQL server version for the right syntax to use near 'DELETE FROM `Info` WHERE
`Item_ItemID`='1'; DELETE FROM `ListPics` WHERE `I' at line 2
我真的不明白连接是如何工作的,我甚至不确定它们是否适用我真的只是想从3个表中删除3行并带有一个参数。
答案 0 :(得分:1)
您不能通过PHP一次删除多个表。 PHP一次只能运行一个语句,并且不能通过连接进行删除。
答案 1 :(得分:1)
您必须设计Item
表,以便在删除记录时删除所有记录。
然后,只有这样,你才能使用:
$sql= "DELETE FROM `Item` WHERE `ItemID`='$_POST[id]';
这完全取决于你的桌子是如何设计的,但你可以找到一些信息here
答案 2 :(得分:1)
您可以使用mysqli_multi_query运行多个查询;你可以将它们作为以分号分隔的列表传递:
$sql= "DELETE FROM `ListPics` WHERE `Item_ItemID`='$_POST[id]';
DELETE FROM `Info` WHERE `Item_ItemID`='$_POST[id]';
DELETE FROM `Item` WHERE `ItemID`='$_POST[id]';";
mysqli_multi_query($dbConn, $sql)
我换了删除的顺序。由于ListPics and
Info have a foreign key in them refering to
Item`,您需要先删除它们,否则您将收到有关违反外键约束的错误。
请注意,您也可以使用数据库中的ON DELETE CASCADE执行此操作 - 使用该功能时,从Item
删除某些内容时,也会删除任何引用ItemID
作为外键的内容。感谢Leonardo提供的信息链接。
答案 3 :(得分:0)
您必须使用正确的分隔符来分隔命令。在这种情况下,您似乎正在使用';' 。 请确保这是预期的语句分隔符。您也可以在会话中更改分隔符。 并且一如既往地在命令行会话中尝试命令集,以确保在程序中烘焙它之前语法正确。
答案 4 :(得分:0)
您应该使用ON DELETE CASCADE