我的删除查询无法正常工作

时间:2015-10-02 19:57:36

标签: php mysql

我在这里遇到了一些麻烦。我的删除查询无法正常工作。 我正在使用内连接从4个表中删除。数据在两个表中删除,但在其余两个表中没有。

事情是post表包含多个记录,我必须删除所有记录。但它只删除第一个。 fields_data表取决于posts表。因此,如果我能够从posts表中删除所有记录,问题也将在fields_data表中解决。

总结我要做的就是根据以下查询删除四个表(“Workspace_name”,“Posts”,“Fields”,“Fields_data”)中的所有数据。我希望它对你有意义。代码如下。

感谢您的时间。更多的事情是它打印成功消息(Workspaces have been deleted)的次数与posts表中的记录数一样多。但显然它不会删除除了第一个..

<?php

include "connection.php";

$sel="SELECT * FROM `posts` WHERE `workspace_id`='$workspace_id'";
$qus=mysqli_query($con,$sel);
$counter=mysqli_num_rows($qus);
if($qus){
    $pids=array();
    while($res=mysqli_fetch_assoc($qus)){
        $res['post_id'];
        $pids[]=$res['post_id'];
    }
}
else{
    echo mysqli_error($con);
}

for($i=0;$i<$counter;$i++){
    $dew="DELETE wn,f,p,fd
          FROM `workspace_name` AS wn
          INNER JOIN `fields` AS f 
          INNER JOIN `posts` AS p
          INNER JOIN `fields_data` AS fd
              ON wn.workspace_id=f.workspace_id AND p.post_id=fd.post_id
          WHERE wn.workspace_id='$workspace_id' AND p.post_id='$pids[$i]'";
    $quer=mysqli_query($con,$dew);
    if($quer){
        echo "Workspace and its corresponding fields have been deleted.. ";
    }
    else{
        echo mysqli_error($con);
    }
}

?>

2 个答案:

答案 0 :(得分:1)

您在2个表ONfield

上缺少posts个条件
$dew="DELETE wn,f,p,fd
          FROM `workspace_name` AS wn
          INNER JOIN `fields` AS f _ON(wn.some_id = f.some_id)_
          INNER JOIN `posts` AS p  _ON(wn.some_id = c.some_id)_
          INNER JOIN `fields_data` AS fd
              ON wn.workspace_id=f.workspace_id AND p.post_id=fd.post_id
          WHERE wn.workspace_id='$workspace_id' AND p.post_id='$pids[$i]'";

答案 1 :(得分:0)

您需要在删除查询中正确连接4个表,并且不要使用循环。在第一个循环中,工作区将被删除一个帖子,但在第二次迭代中没有剩余的工作区,因此内部联接也不会从posts表中产生任何记录。

DELETE wn,f,p,fd FROM `workspace_name` AS wn INNER JOIN `fields` AS f
ON wn.workspace_id=f.workspace_id INNER JOIN `posts` AS p
ON wn.workspace_id=p.workspace_id INNER JOIN `fields_data` AS fd
ON p.post_id=fd.post_id 
WHERE wn.workspace_id='$workspace_id'