2017-03-28 7 views
1

私は3つのテーブルからいくつかのデータを削除しようと、は、foreachループを使用してデータベースの行を削除することはできません - PHP/MySQLの

1 - 病気 2 - jnctn_ailments_symptoms 3 - 症状

私はしようとしました症状の表から症状を削除しない場合は、Junction Tableから最初にLinkを削除し、次にAilmentを削除してください(逆も同様です)。 しかし、私はforeachループのステップで失敗しています、私は病気の横にある症状の発生をチェックしています。すべては問題ありませんが、症状を削除する場合は、「SQL構文に誤りがあります。正しい構文を使用するにはMySQLサーバのバージョンに対応したマニュアルをチェックしてください。

症状のIDは正常に取得されますが、クエリは削除されません。

次のコードを見て、私が間違っている場所を教えてください。

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




    } 

私は "= '$ symotom' FK_symptomIDを試してみました;。、連結など、何も働いていない、次のように述べたすべてのクエリを連結する

+0

あなたの質問をエコーし​​て、それらが有効かどうか確認してみましたか? – mkaatman

+0

私は次のようなことをしています:SELECT * FROM jnctn_ailments_symptoms WHERE FK_symptomID = 206、それは私にはうまく見えます。あなたは何を言っていますか? – BeardGuy

+0

これは1つのクエリですが、少なくとも2つ以上のクエリがあります。それらすべてをエコーし​​、あなたが扱っているものを見てください。手動でそれらのクエリを実行し、それらが機能するかどうかを確認します。 – 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(); 
      } 

     } 




    } 

ご協力ありがとうございました。ありがとうございます。

関連する問題