简体   繁体   English

无法使用foreach循环删除数据库行-php / mysql

[英]can not delete database row using foreach loop - php/mysql

I trying to delete some data from three tables, 我试图从三个表中删除一些数据,

1:- ailments 2:- jnctn_ailments_symptoms 3:- symptoms 1:-疾病2:-jnctn_ailments_症状3:-症状

I tried to delete the Link first from Junction Table, Then Delete The Ailment (vise versa too) and then final check the symptoms for any other link with another ailment, if not delete the symptom from symptom table. 我尝试先从连接表中删除链接,然后再删除疾病(也请参见相反),然后最后检查与其他疾病有关的任何其他链接的症状,如果没有从症状表中删除症状。 but I am failing at on step in foreach loop, I am checking the occurrences for symptoms beside the ailment deleted. 但是我无法在foreach循环中继续,我正在检查已删除的疾病旁边是否出现症状。 everything is fine but when it comes to deleting the symptom I get mysql 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 '' at line 1". 一切都很好,但是当涉及到删除症状时,我得到mysql错误“您的SQL语法有错误;请查看与您的MySQL服务器版本相对应的手册,以找到在'第1行'附近使用的正确语法。

I the ids for the symptoms are retrieved successfully but not delete query not working, somehow. 我成功获取了症状的ID,但无法以某种方式删除不起作用的查询。

please see the following code and let me know where I am mistaken. 请查看以下代码,并让我知道我在哪里弄错了。

if(isset($_GET['del']))
{
    $delID = $_GET['del'];



    $originalSymptoms="";
    $symptomO[] = array();
    echo $delID;
    $symp = "SELECT symptomID  FROM symptoms 
            INNER JOIN jnctn_ailments_symptoms
            ON jnctn_ailments_symptoms.FK_symptomID= symptoms.symptomID
            INNER JOIN ailments
            ON ailments.ailmentID = jnctn_ailments_symptoms.FK_ailmentID
            WHERE ailments.ailmentID IN ('".$delID."')";


    mysql_select_db($dbName);
    $sympRes = mysql_query($symp,$con) or die(mysql_error());

        while($symprow = mysql_fetch_assoc($sympRes))
             {
               if(empty($originalSymptoms))
               {
                $originalSymptoms = $symprow['symptomID'];
               }
                else
                {
                $originalSymptoms = $originalSymptoms.",".$symprow['symptomID']; 
                }
              }




   echo $originalSymptoms;


     $newSymptoms = explode("," , $originalSymptoms);
    foreach($newSymptoms as $symptom)
    {
    $originalSymptomsArray[] = $symptom;

    }
       echo count($originalSymptomsArray);

        $delAilment = "DELETE FROM ailments WHERE ailmentID='$delID'";
    $delAilmentResult = mysql_query($delAilment,$con) or die(mysql_error());

   $delLink = "DELETE FROM  jnctn_ailments_symptoms WHERE FK_ailmentID ='$delID'";
   $delLinkResult = mysql_query($delLink,$con) or die(mysql_error());

    foreach($originalSymptomsArray as $symptom)
    {
        echo $symptom."<br>";




        $sql2 = "SELECT * FROM jnctn_ailments_symptoms WHERE FK_symptomID=".$symptom;
        $result2 = mysql_query($sql2,$con);
        $count = mysql_num_rows($result2);
        if(!$result2 || $result2 != 0)
        {
            echo mysql_error();
            $delSymptom = false;
        }
        else
        {
            $delSymptom = true;
        }


        if($delSymptom)
        {

            $sqlDel = "DELETE FROM symptoms WHERE symptomID ='$symptom'";
            $delResult = mysql_query($sqlDel,$con)or die(mysql_error());
            if(!$delResult)
            {
                echo mysql_error();
            }
            else
            {
                echo "Symptoms Deleted!";
            }
        }




    }

I have tried FK_symptomID='$symotom'"; , concatenation etc, nothing worked. 我试过FK_symptomID ='$ symotom'“;,串联等,没有任何效果。

尝试将以下提到的所有查询连接起来,

$sqlDel = "DELETE FROM symptoms WHERE symptomID ='".$symptom."'";

somehow following code worked 以下代码以某种方式起作用

 foreach($originalSymptomsArray as $symptom)
    {


        $sql2 = "SELECT `ID`, `FK_ailmentID`, `FK_symptomID` FROM `jnctn_ailments_symptoms` WHERE `FK_symptomID`='".$symptom."'";

        $result2 = mysql_query($sql2,$con);
        $count = mysql_num_rows($result2);
        if($count>0)
        {
            echo mysql_error();
            $delSymptom = 0;
        }
        else
        {

            $delSymptom = 1;
        }


        if($delSymptom==1)
        {

            $sqlDel = "DELETE FROM symptoms WHERE symptomID ='".$symptom."'";
            $delResult = mysql_query($sqlDel,$con)or die(mysql_error());
            if(!$delResult)
            {
                echo mysql_error();
            }

        }




    }

thank you for concatenation suggestion, and thank you everybody. 感谢您提出串联建议,也谢谢大家。

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

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