PHP错误未捕获mysqli\u sql\u异常:向MySQL发送日期时日期值不正确
我花了一下午的时间尝试各种解决方案,但尽管有许多关于“所以”的问题,我仍然无法解决这个问题 下面是我的PHP代码,我想在mySQL表中插入日期,根据屏幕截图,该表只有3列。 日期以php格式到达,格式为PHP错误未捕获mysqli\u sql\u异常:向MySQL发送日期时日期值不正确,php,mysql,Php,Mysql,我花了一下午的时间尝试各种解决方案,但尽管有许多关于“所以”的问题,我仍然无法解决这个问题 下面是我的PHP代码,我想在mySQL表中插入日期,根据屏幕截图,该表只有3列。 日期以php格式到达,格式为2020-10-03。我的理解是,这足够正确,可以直接将它们发送到mySQL,但是我尝试以不同的方式转换它们,但仍然收到以下错误: 感谢任何关于我哪里出错以及我需要如何解释此错误消息的指导 Cheers您可以使用prepared语句,这样您就不需要转换日期,而且它更安全,因为它可以防止SQL注
2020-10-03
。我的理解是,这足够正确,可以直接将它们发送到mySQL,但是我尝试以不同的方式转换它们,但仍然收到以下错误:
感谢任何关于我哪里出错以及我需要如何解释此错误消息的指导
Cheers您可以使用prepared语句,这样您就不需要转换日期,而且它更安全,因为它可以防止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();
Unquoted
2020-06-30
是一个算术运算,而不是一个日期-产生1984
。一句话:使用预先准备好的语句,您就不必担心这样的问题,同时使您的代码更安全、更高效。请参阅mysqli
或PDO
(推荐)准备好的声明。@GMB感谢您的澄清,我确实想知道1987年是从哪里产生的。非常感谢@S.Sachith我不得不将变量更改为“Y-m-d”格式,但效果很好,我学到了一些东西。干杯。您的wellcome@trig79:)
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();