1

IDが削除されたときに、データベース内のサブジェクトのコンテンツ全体を削除したい。

if(isset($_GET['subject_id'])){
$subject_id = $_GET['subject_id'];}

$deleteexams = mysql_query("SELECT * FROM exam_exams where exam_subject_id = '$subject_id'")or die(mysql_query());
while($ids = mysql_fetch_array($deleteexams)){
$selected = $ids['exam_id'];
}
$deletequestions = mysql_query("SELECT * FROM exam_questions where question_exam_id = '$selected'")or die(mysql_query());
while($ids2 = mysql_fetch_array($deletequestions)){
$selectedids = $ids2['question_id'];
}
$deleteanswers = mysql_query("SELECT * FROM exam_answers where answer_question_set_id = '$selectedids'")or die(mysql_query());
while($ids3 = mysql_fetch_array($deleteanswers)){
$selectedidsans = $ids3['answer_id'];
}

     /// I want to delete all of the answers inside the questions of the exams in the subject  
    mysql_query("DELETE * FROM exam_answers where answer_id = '$selectedidsans'")or die(mysql_error());
    /////i want to delete all the questions
        mysql_query("DELETE * FROM exam_questions where answer_id = '$selectedids'")or die(mysql_error());
    ////this will work because this has the subject ids
        mysql_query("DELETE * FROM exam_exams where exam_subject_id = '$subject_id'")or die(mysql_error());
    /////and this too
        mysql_query("DELETE * FROM exam_subjects where subject_id = '$subject_id'")or die(mysql_error());

私の問題は、フィールドに subject_id がないため、回答と質問を削除する方法です。

4

2 に答える 2

1

Delete * from は正しい構文ではありません。

コメントに記載されているように IN を使用する必要があります。これは、試験 ID を使用してテーブル内のすべての answer_id を選択できるためです。フィールド名は状況に応じて変更される可能性がありますが、ロジックは次のようになります。

   DELETE
FROM exam_answers
WHERE answer_id IN
    (SELECT answer_id
     FROM questions
     WHERE question_id IN
         (SELECT exam_id
          FROM exams
          WHERE subject_id=<yoursubjectid>))

効率的な方法ではありません。実際には、冗長であっても、各テーブルにサブジェクト ID を格納する方がよい場合があります。

于 2013-08-19T07:13:17.703 に答える