如果数据库中已存在DATE,如何避免插入DATE以避免重复?

时间:2018-10-23 01:47:05

标签: php forms mysqli

我正在为我们的学校项目预订。我想确保console.log(this.myInput.nativeElement.errors);拒绝在数据库表mysqli中插入reservationDate,如果值已经存在于数据库中。问题是即使数据库中已经存在数据,也会插入数据。该代码似乎不起作用,所以我想知道你们是否可以检查我的代码以查看我做错了什么?

"tbl_funeral"

1 个答案:

答案 0 :(得分:0)

一种可行的解决方法是在数据库级别进行处理,并在ReservationDate列上添加唯一约束:

ALTER TABLE tbl_funeral ADD CONSTRAINT date_cnstr UNIQUE (ReservationDate);

有了此约束,任何试图使用表中已经出现的保留日期的插入都将在数据库本身上。

您可以在PHP代码中使用类似于以下内容的模式:

try {
    $conn = new mysqli("localhost", "root", "", "parishdb");

    if(isset($_POST["btnSavess"])) {
        $conn->query("INSERT IGNORE INTO tbl_funeral(FirstName, LastName, DateOfBirth, DateOfDeath, Address, ReservationDate, SelectTime) VALUES('$_POST[firstName]', '$_POST[lastName]', '$_POST[dob]', '$_POST[dod]', '$_POST[address]', '$_POST[reservationDate]','$_POST[selectTime]')");

        $result = mysqli_query($conn, $query);
        if ($query === FALSE) {
            throw new Exception($this->mysqli->error);
        }

        mysqli_close($conn);
    }

} catch(Exception $e) {
    // ...
}

请注意,我看到您尚未使用准备好的语句。您应该考虑使用它们以避免SQL注入,并使代码更具可读性。