как выбрать две таблицы с ограничениями 1? - PullRequest
0 голосов
/ 24 марта 2020

** Итак, у меня сейчас путаница, и у меня недостаточно знаний для php. У меня есть эти две таблицы, личная и старшая. мне нужно зависеть от чего-то: **

Моя личная таблица состоит из: ExamineeID FirstName MiddleName LastName Возраст ContactNumber

Моя старшая таблица состоит из: SeniorID LastSchoolAttended Strand SchoolAddress Advisor Honor1 Honor2 Honor3 Honor4 ExamineeID

Мне нужно, чтобы FirstName, MiddleName, LastName и LastSchoolAttended были ограничены 1. Это означает, что если FirstName, MiddleName, LastName и LastSchoolAttended существуют, он не будет записан. Мой внешний ключ - ExamineeID. Я пытаюсь кодировать, но я знаю, что мой код неверен.

$SELECTpersonal = "SELECT FirstName, MiddleName, LastName, LastSchoolAttended From personal, senior Where FirstName = ? And MiddleName = ? And LastName = ? And LastSchoolAttended = ? Limit 1";
        $SELECTsenior = "SELECT LastSchoolAttended, Strand, SchoolAddress, Adviser, Honor1, Honor2, Honor3, Honor4 From senior Where LastSchoolAttended = ?, Strand = ? And SchoolAddress = ? And Adviser = ? And Honor1 = ? And Honor2 = ? And Honor3 = ? And Honor4 = ? Limit 0";

        $INSERTpersonal = "INSERT Into personal (FirstName, MiddleName, LastName, Age, HomeAddress, ContactNumber, LastSchoolAttended) values (?,?,?,?,?,?,?)";
        $INSERTsenior = "INSERT Into senior (LastSchoolAttended, Strand, SchoolAddress, Adviser, Honor1, Honor2, Honor3, Honor4) values (?,?,?,?,?,?,?,?)";

        $stmt = $conn->prepare($SELECTpersonal);
        $stmtsenior = $conn->prepare($SELECTsenior);
        $stmt -> bind_param("ssss", $FirstName,$MiddleName,$LastName,$LastSchoolAttended);
        $stmtsenior -> bind_param("sssssss", $Strand, $SchoolAddress,$Adviser,$Honor1,$Honor2,$Honor3,$Honor4);
        $stmt -> execute();
        $stmtsenior -> execute();
        $stmt -> bind_result($FirstName,$MiddleName,$LastName,$LastSchoolAttended);
        $stmtsenior -> bind_result($Strand, $SchoolAddress,$Adviser,$Honor1,$Honor2,$Honor3,$Honor4);
        $stmt -> store_result();
        $stmtsenior -> store_result();
        $rnum = $stmt -> num_rows;
        $rnumsenior = $stmtsenior -> num_rows;


        if ($rnum == 0 ) {  
            $stmt->close();
            $stmt = $conn -> prepare($INSERTpersonal);

            $stmt -> bind_param("sssisis", $FirstName,$MiddleName,$LastName,$Age,$HomeAddress,$ContactNumber,$LastSchoolAttended);


            $stmt -> execute();

        }
        else if ($rnumsenior = 0 ){
            $stmtsenior->close();
            $stmt = $conn -> prepare($INSERTsenior);
            $stmt -> bind_param ("ssssssss",$LastSchoolAttended,$Strand, $SchoolAddress,$Adviser,$Honor1,$Honor2,$Honor3,$Honor4);
            $stmtsenior -> execute();


        }

Например, я вставил данные FirstName: Name1 MiddleName: MiddleName1 LastName: LastName1

и для LastSchoolAttended, полученного из 2-й таблицы: LastSchoolAttended: School1.

если я вставлю снова, с теми же данными, что и выше, они не будут записаны, потому что они уже существуют, и это является основой, если экзаменуемые сдавали экзамен или нет. Я не знаю, как соединить друг друга.

...