2017-03-28 27 views
1

我想从三个表中删除一些数据,无法删除数据库行 - PHP/MySQL的

1: - 疾病 2: - jnctn_ailments_symptoms 3: - 症状

我试着如果不是从症状表中删除症状,则先从连接表中删除链接,然后删除疾病(反之亦然),然后最后检查与其他疾病的任何其他链接的症状。 但我没有在foreach循环中的步骤,我正在检查疾病发生之外的疾病删除。一切都很好,但是当涉及到删除症状时,我得到了mysql错误“您的SQL语法中有错误;请查看与您的MySQL服务器版本相对应的手册,以找到在'第1行'附近使用的正确语法。

我症状检索成功,但不删除查询不工作,以某种方式。

请看下面的代码,让我知道我错了。

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!"; 
      } 
     } 




    } 

我已经试过FK_symptomID = '$ symotom'“;,拼接等,没有什么工作

+0

您是否尝试过回显您的查询并查看它们是否有效? – mkaatman

+0

我做了,并得到如下内容:SELECT * FROM jnctn_ailments_symptoms WHERE FK_symptomID = 206,它看起来很好。你说什么? – BeardGuy

+0

这是一个查询,你至少还有几个。回声他们所有,看看你正在处理。手动运行这些查询并查看它们是否工作。 – mkaatman

回答

0

再做连接提到的所有的疑问如下,

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

莫名其妙下面的代码工作

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(); 
      } 

     } 




    } 

感谢您对串联的建议,并感谢你们每一个人。