尝试将日期插入数据库时如何修复 "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();
}
所以我试图从表单中插入数据,其中包括一个 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();
}