我的服务器上有一个简单的PHP函数,它查看数据库并返回介于传入日期之间的表行。代码如下所示
if(isset($_GET['startDate'])) {
$startDateRaw = $_GET['startDate'];
$startSplit = explode("_", $startDateRaw);
$startDate = date('d/m/Y', mktime(0,0,0, $startSplit[1], $startSplit[0], $startSplit[2]));
$endDate = date('d/m/Y');
if(isset($_GET['endDate']))
{
$endDateRaw = $_GET['endDate'];
$endDateSplit = explode("_", $endDateRaw);
$endDate = date('d/m/Y', mktime(0,0,0,$endDateSplit[1], $endDateSplit[0], $endDateSplit[2]));
}
然后连接到数据库,然后运行此查询并对结果进行编码
$query = "SELECT * FROM AppointmentList WHERE (DateCreated >= STR_TO_DATE($startDate, '%d%m%Y') AND DateDue <= STR_TO_DATE($endDate, '%d%m%Y'));";
$result = mysql_query($query,$link) or die('Errant query: '.$query);
$posts = array();
if(mysql_num_rows($result)) {
while($post = mysql_fetch_assoc($result)) {
$posts[] = array('Appointments'=>$post);
}
}
header('Content-type: application/json');
echo json_encode(array('Appointments'=>$posts));
执行查询,但不返回任何数据(日期范围之间存在大量数据)。
可以看到代码在appointments code
运行我猜猜STR_TO_DATE中的转换与$ startDate和$ endDate格式之间存在错误,但无法看到它是什么。
答案 0 :(得分:0)
您的php程序中的日期看起来像这样:'12/31/2015'
如果是这种情况,您需要使用STR_TO_DATE()
这样的成功转换为MySQL的内部日期格式。请注意格式字符串中的/
个字符。
STR_TO_DATE($startDate, '%d/%m/%Y')