【发布时间】:2021-04-08 17:39:53
【问题描述】:
我对此感到困惑。有什么方法可以测试所有查询是否正常工作并且不返回错误?如果是这样,执行它们或返回一些东西。
我正在构建一个注册方法,它有 2 个部分:登录信息(用户名、密码)和通常的员工信息(姓名、电子邮件等)。
注册方法将员工信息插入employee 表,然后获取主键并将其与login 表中的登录信息一起插入
login 表有一个UNIQUE 列,这应该在重复时返回错误。问题是employee 信息插入时没有login 信息。
我该如何解决这个问题?
我的代码:
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());
}
}
【问题讨论】:
-
你以错误的架构方式进行操作,登录和注册应该在同一张桌子上
-
@Psycho 为什么登录和注册应该在同一张桌子上?员工详细信息可能会在程序中其他不需要登录详细信息的区域使用 - 同样登录/注销、密码重置和暂停帐户等登录功能无需了解用户个人资料详细信息
-
是的,如果您将表类型定义为 InnoDB,您可以撤消上一次插入。 see this question
-
好的,我明白了
-
@imposterSyndrome 感谢大家提供信息。