尝试将日期插入数据库时​​如何修复 "Incorrect date value: '2020' for column 'StartDate' at row 1"

How to fix "Incorrect date value: '2020' for column 'StartDate' at row 1" when trying to insert date into database

所以我试图从表单中插入数据,其中包括一个 ID、2 个日期、一个字符串和一个小数。但它给出了上面的错误。

列为:ID:int、startdate:Date、enddate:Date、number:int、字符串、十进制。

我已经尝试添加所有这些 date() 函数和 strtodate() 之类的东西,但没有任何效果。

if (isset($_POST['submitReservation'])) {
    $startDate = $_POST['startDate'];
    $endDate = $_POST['endDate'];

    $linens = mysqli_real_escape_string($conn, $_POST['linens']);
    $peopleAmount = mysqli_real_escape_string($conn, $_POST['persons']);
    $number = 50;
    $userID = $_SESSION["UserID"];

    $sql = $conn->prepare("INSERT INTO reservation (TenantId, StartDate, EndDate, Number_Of_Persons, Linens, Cost) VALUES (?, ?, ?, ?, ?, ?)");
    $sql->bind_param("iiiisd", $userID, $startDate, $endDate, $peopleAmount, $linens, $number);
    $sql->execute() or die(mysqli_error($conn));
}

您正在将日期转换为 int $sql->bind_param("iiiisd"

编辑:MySQL 需要一个字符串,所以尝试 $sql->bind_param("issisd"

如果您使用的是标准 PDO 库,则可以使用 bindParam() 或 bindValue() 并指定类型,例如

if (isset($_POST['submitReservation'])) {
    $startDate = $_POST['startDate'];
    $endDate = $_POST['endDate'];

    $linens = $_POST['linens']);
    $peopleAmount = $_POST['persons']);
    $number = 50;
    $userID = $_SESSION["UserID"];

    $sql = $conn->prepare("INSERT INTO reservation (TenantId, StartDate, EndDate, Number_Of_Persons, Linens, Cost) VALUES (?, ?, ?, ?, ?, ?)");
    $sql->bindParam(1, $userID, PDO::PARAM_STR);
    $sql->bindParam(2, $startDate, PDO::PARAM_STR);
    $sql->bindParam(3, $endDate, PDO::PARAM_STR);
    $sql->bindParam(4, $peopleAmount, PDO::PARAM_INT);
    $sql->bindParam(5, $linens, PDO::PARAM_STR);
    $sql->bindParam(6, $number, PDO::PARAM_INT);
    $sql->execute();
}