delete or undo the first query if the second query did not work

  mariadb, mysql, php

im confused about this. Is there any way like to test if all queries are working and not returning erros? if so execute them or return something.

I am building a signup method, this have 2 parts: loginInfo(username, password) and the usual Employee info (name, email, etc..).

The signup method inserts the Employee info into employee table, then it gets the PRIMARY key and insert it alongside with the loginInfo in the login table

the login table has an UNIQUE column, this should return error on duplicated. The problem is that the employee info are inserted without a login information.

How can i solve this problem?

My code:

public function signUp($personInfo, $employeeInfo, $loginCredit){
    try {
        $stmt = $this->pdo->prepare("INSERT 
            INTO `$this->employeeTable`
                (`name`, `birthDay`, `phnNmb`, `email`, `address`, `idnNmb`, `insNmb`, `bankInfo`)
            VALUES
                (?, ?, ?, ?, ?, ?, ?, ?);
        ");

        $stmt->execute([
            $personInfo["name"],
            $employeeInfo["birthDay"],
            $personInfo["phnNmb"],
            $personInfo["email"],
            json_encode($employeeInfo["address"]),
            $employeeInfo["idnNmb"],
            $employeeInfo["insNmb"],
            json_encode($employeeInfo["bankInfo"])
        ]);

        $employeeId = $this->pdo->lastInsertId();

        $insertloginCredit = $this->pdo->prepare("INSERT INTO `$this->loginTable` (`empId`, `userName`, `userPass`) VALUES ($employeeId, ?, ?);");
        $insertloginCredit->execute($loginCredit["userName"], md5($loginCredit["userPass"]));

        echo "done";

    } catch (PDOException $err) {
        die($err->getMessage());
    }
}

Source: Ask PHP

LEAVE A COMMENT