简体   繁体   English

Php Mysql使用Id从2个表中删除

[英]Php Mysql DELETE From 2 Tables Using Id

In my admin dashboard I created a page that show information from 2 tables using a foreign key Id_clt, now I created the delete query but it didn't work Please correct me if I did something wrong, Thanks. 在我的管理仪表板中,我创建了一个页面,使用外键Id_clt显示来自2个表的信息,现在我创建了删除查询,但它不起作用如果我做错了请纠正我,谢谢。

 $conn = mysqli_connect("localhost", "root", "", "vm");
    // DELETE QUERY
    if(isset($_GET['id'])){

        $de=$_GET['id'];    
        $sql_de="DELETE FROM clt_t1,t2 INNER JOIN t2.Id_clt ON clt_t1.Id_clt=t2.Id_clt WHERE Id_clt=$de ";

        $rd=mysqli_query($conn,$sql_de);

        if($rd){
            header("refresh:1; url=welcomeadmin.php");
        }
        else{
            mysqli_error($conn);
            echo "error";
        }

    }

admin.php page: admin.php页面:

 <form method="GET" action="deletecomm.php">
    ..
    <td><a href="javascript:delete_data(<?php echo $data['Id_clt'];   ?>)">X</a></td>
    ..
    </form>

The syntax of DELETE ... FROM ... JOIN in MySQL is not quite that. MySQL中的DELETE ... FROM ... JOIN的语法并不是那么简单。

Instead of 代替

DELETE FROM clt_t1,t2  
INNER JOIN t2.Id_clt ON clt_t1.Id_clt=t2.Id_clt 
WHERE Id_clt=:de 

You should use 你应该用

DELETE clt_t1
FROM clt_t1
INNER JOIN t2 ON clt_t1.Id_clt=t2.Id_clt 
WHERE clt_t1.Id_clt=:de

And avoid direct variable interpolation by the way. 并且顺便避免直接变量插值。

Thanks to everyone who tried to help me & gave me advice I FOUND THE RIGHT SOLUTION: 感谢所有试图帮助我并给我建议的人,我找到了正确的解决方案:

$sql_de="
DELETE t2 
FROM t2
LEFT JOIN clt_t1 ON clt_t1.Id_clt=t2.Id_clt 
WHERE clt_t1.Id_clt='".$de."'
";

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM