gpt4 book ai didi

php检查mysql日期时出错

转载 作者:行者123 更新时间:2023-11-29 22:54:52 25 4
gpt4 key购买 nike

警告:我是 php 新手

我正在从 mysql 格式的表单中读取 2 个日期(即 YYYY-MM-DD),并尝试对它们进行错误检查以确保有效性,并且其中一个日期小于另一个日期

if(!empty($day1) && !empty($day2)){
$sndate=array();
$sndate = explode('-',$day1);
$sndtnum = implode($sndate);
$sndtnum = (int) $sndtnum;

$unsndate=array();
$unsndate = explode('-',$day2);
$unsndtnum = implode($unsndate);
$unsndtnum = (int) $unsndtnum;
if (!checkdate($sndate[1],$sndate[2],sndate[0]) || !checkdate($unsndate[1],$unsndate[2],unsndate[0]) || $unsndtnum<$sndtnum)
{ $error=True; $errtext .="Date field is filled in wrong \n";
}else {$error=False;}
}

这似乎不起作用。我很确定这是因为检查日期,但我不确定内爆/类型转换是否也存在问题。

关于如何解决这个问题有什么想法吗?

最佳答案

除了 sndate[0]unsndate[0] 变量缺少美元符号之外,如果邪恶用户输入非数字字符,您的检查实际上将不起作用在 $day1 中(例如 2015-09abc-01 将被视为小于 2015-05-01)。

以下方法通过将日期从已知格式转换为 DateTime 对象然后再转换回来来验证日期,确保两个格式化日期相等:

$f = 'Y-m-d';
$ok1 = ($d1 = DateTime::createFromFormat($f, $day1)) && $d1->format($f) == $day1;
$ok2 = ($d2 = DateTime::createFromFormat($f, $day2)) && $d2->format($f) == $day2;

if ($ok1 && $ok2 && $d1 <= $d2) {
// Ok
} else {
// Error
}

希望这有帮助:)

关于php检查mysql日期时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28751835/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com