Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP错误未捕获mysqli\u sql\u异常:向MySQL发送日期时日期值不正确_Php_Mysql - Fatal编程技术网

PHP错误未捕获mysqli\u sql\u异常:向MySQL发送日期时日期值不正确

PHP错误未捕获mysqli\u sql\u异常:向MySQL发送日期时日期值不正确,php,mysql,Php,Mysql,我花了一下午的时间尝试各种解决方案,但尽管有许多关于“所以”的问题,我仍然无法解决这个问题 下面是我的PHP代码,我想在mySQL表中插入日期,根据屏幕截图,该表只有3列。 日期以php格式到达,格式为2020-10-03。我的理解是,这足够正确,可以直接将它们发送到mySQL,但是我尝试以不同的方式转换它们,但仍然收到以下错误: 感谢任何关于我哪里出错以及我需要如何解释此错误消息的指导 Cheers您可以使用prepared语句,这样您就不需要转换日期,而且它更安全,因为它可以防止SQL注

我花了一下午的时间尝试各种解决方案,但尽管有许多关于“所以”的问题,我仍然无法解决这个问题

下面是我的PHP代码,我想在mySQL表中插入日期,根据屏幕截图,该表只有3列。

日期以php格式到达,格式为
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();