php - PHP错误未捕获mysqli_sql_exception:日期值不正确:将日期发送到MySQL时
问题描述
我花了一个下午尝试各种解决方案,但尽管有很多关于“SO”的问题,但我还是无法解决这个问题。
我的 PHP 代码在我想在 mySQL 表中插入日期的位置下方,根据屏幕截图,该表只有 3 列。
日期到达 php 已经格式化为2020-10-03
. 我的理解是这足以正确地将它们直接发送到 mySQL,但是我尝试以不同的方式转换它们,但我仍然收到以下错误:
include(dirname(__DIR__).'/php/dbConnection.php');
ini_set('display_errors', 'On');
error_reporting(E_ALL);
//values passed from ajax
// $id = $_POST['staffID'];
// $fromDate = $_POST['startDate'];
// $endDate = $_POST['endDate'];
//for testing > This Fails
$id = '22';
$fromDate = DateTime::createFromFormat('d-m-Y', '10-06-2020')->format('Y-m-d');
$endDate = DateTime::createFromFormat('d-m-Y', '12-06-2020')->format('Y-m-d');
//for testing > This Fails
//$id = '22';
//$fromDate = '2020-06-30';
//$endDate = '2020-07-30';
$data = array(); // array to pass back data
$stmt = $conn->prepare("INSERT INTO vacation (id, from_date, to_date)
VALUES ($id, $fromDate, $endDate)");
$stmt->execute();
$data['success'] = true;
$data['message'] = 'Success!';
echo json_encode($data);
mysqli_close($conn);
感谢有关我哪里出错以及我需要如何解释此错误消息的任何指导。
干杯
解决方案
您可以使用准备好的语句,这样您就不需要转换日期,而且它更安全,因为它可以防止 SQL 注入,所以这里是更改的代码
include(dirname(__DIR__).'/php/dbConnection.php');
ini_set('display_errors', 'On');
error_reporting(E_ALL);
//values passed from ajax
// $id = $_POST['staffID'];
// $fromDate = $_POST['startDate'];
// $endDate = $_POST['endDate'];
//for testing > This Fails
$id = '22';
$fromDate = '10-06-2020'
$endDate = '12-06-2020'
//for testing > This Fails
//$id = '22';
//$fromDate = '2020-06-30';
//$endDate = '2020-07-30';
$data = array(); // array to pass back data
$stmt = $conn->prepare("INSERT INTO vacation (id, from_date, to_date)
VALUES (?, ?, ?)");
$stmt->bind_param("sss", $id, $fromDate, $endDate);
$stmt->execute();
$data['success'] = true;
$data['message'] = 'Success!';
echo json_encode($data);
$stmt->close();
$conn->close();
推荐阅读
- unix - 使用 ssh、newgrp、cleartool setview 进行初始设置的 unix 脚本:如何避免 subshell?
- java - FAILURE:构建失败并出现异常。在离子中构建android apk时
- python-3.x - 有效地保存巨大的 2D(或 3D)numpy 数组作为 DNN 的标签,具有位精确的精度
- javascript - React:如何将状态设置为可能增加的列表
- 项目?
- scala - 如何在 Scala 中以 5MB 块的迭代从本地文件写入二进制文件?
- react-native - 使用动画变换,无法触发onLayout
- mysql - MySQL Fill in the Remaining Balance
- mysql - mysql select查询非集群环境下分区表的优化
- python-3.x - 使用 POSTMAN 将 python 代码转换为 JSON 格式
- python - Creating Kivy widgets in a loop