Php 从查询字符串获取值时出现问题

Php 从查询字符串获取值时出现问题,php,query-string,Php,Query String,我下面的函数是从另一个正常工作的函数复制而来的。应从查询字符串中获取值并将其转换为日期: function updateShift() { echo $name = $_GET['shift_name']; echo $start_date = date('Y-m-d H:i:s', strtotime("{$_GET['start_hours']}:{$_GET['start_minutes']} {$_GET['start_ampm']}"));

我下面的函数是从另一个正常工作的函数复制而来的。应从查询字符串中获取值并将其转换为日期:

function updateShift()
    {
        echo $name = $_GET['shift_name'];

        echo $start_date = date('Y-m-d H:i:s', strtotime("{$_GET['start_hours']}:{$_GET['start_minutes']} {$_GET['start_ampm']}"));
        echo $stop_date = date('Y-m-d H:i:s', strtotime("{$_GET['stop_hours']}:{$_GET['stop_minutes']} {$_GET['stop_ampm']}"));
}
然而,它返回:

Shift Name
1969-12-31 17:00:00
1969-12-31 17:00:00
你知道为什么这在其他地方效果很好,但在这里却不行吗?查询字符串在那里,轮班名称正确无误。

如果您这样做:

function updateShift()
    {
        echo $name = $_GET['shift_name'];

        echo $start_date = date('Y-m-d H:i:s', strtotime($_GET['start_hours'].':'.$_GET['start_minutes'].' '.$_GET['start_ampm']));
        echo $stop_date = date('Y-m-d H:i:s', strtotime($_GET['stop_hours'].':'.$_GET['stop_minutes'].' '.$_GET['stop_ampm']));
}

如果您这样做会怎么样:

function updateShift()
    {
        echo $name = $_GET['shift_name'];

        echo $start_date = date('Y-m-d H:i:s', strtotime($_GET['start_hours'].':'.$_GET['start_minutes'].' '.$_GET['start_ampm']));
        echo $stop_date = date('Y-m-d H:i:s', strtotime($_GET['stop_hours'].':'.$_GET['stop_minutes'].' '.$_GET['stop_ampm']));
}


收到的日期是Unix纪元的开始,因为日期函数调用的第二个参数为false(或0)。我刚刚使用您的代码运行了一些快速测试,我发现strotime返回的值为false

echo "{$_GET['start_hours']}:{$_GET['start_minutes']} {$_GET['start_ampm']}";
=> '4:0 PM' 

您需要确保分钟字段中有2位数字,以允许strotime将其视为有效时间并正确解析。为此,您可以更新查询字符串,使用或sprintf来确保您拥有有效时间所需的2位数字。

您收到的日期是Unix纪元的开始,因为日期函数调用的第二个参数为false(或0)。我刚刚使用您的代码运行了一些快速测试,我发现strotime返回的值为false

echo "{$_GET['start_hours']}:{$_GET['start_minutes']} {$_GET['start_ampm']}";
=> '4:0 PM' 

您需要确保分钟字段中有2位数字,以允许strotime将其视为有效时间并正确解析。为此,您可以更新查询字符串,使用或sprintf确保您拥有有效时间所需的2位数字。

您请求的URI是什么?action=update&shift=19&shift\u name=Fun&开始时间=4&start时间=0&start时间=6&stop时间=0&stop时间=0&stop时间=0&stop时间=0&start时间=0&start时间=0&start时间=0&start时间=0&start时间=0&start时间=6&stop时间=0&start时间=P是否确定执行了updateShift,而不是其他功能?我有时有这个问题。另外,如果删除“$name=”、“$start\u date=”、和“$stop\u date=”,该怎么办?您请求的URI是什么?action=update&shift=19&shift\u name=Fun&开始时间=4&start时间=0&start时间=6&stop时间=0&stop时间=0&stop时间=0&stop时间=0&start时间=0&start时间=0&start时间=0&start时间=0&start时间=0&start时间=6&stop时间=0&start时间=P是否确定执行了updateShift,而不是其他功能?我有时有这个问题。另外,如果删除“$name=”、“$start\u date=”和“$stop\u date=”,会怎么样?