私は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を試してみました;。、連結など、何も働いていない、次のように述べたすべてのクエリを連結する
あなたの質問をエコーして、それらが有効かどうか確認してみましたか? – mkaatman
私は次のようなことをしています:SELECT * FROM jnctn_ailments_symptoms WHERE FK_symptomID = 206、それは私にはうまく見えます。あなたは何を言っていますか? – BeardGuy
これは1つのクエリですが、少なくとも2つ以上のクエリがあります。それらすべてをエコーし、あなたが扱っているものを見てください。手動でそれらのクエリを実行し、それらが機能するかどうかを確認します。 – mkaatman