Isset可在本地服务器上使用,但不能在实时服务器上使用

时间:2019-01-11 06:39:24

标签: php

我正在使用Xampp v3.2.2在本地开发网站,我正在运行查询以过滤数据,该查询在我的本地上运行良好,但是当我上载(更新服务器上的代码)时,它始终返回0值。 我的服务器使用本机php 5.6

我已经用!empty代替isset了,但是它不起作用。因此,这是我的过滤器代码之一:

    $this->_require_login();
    $user = $this->session->userdata('user_id');
    $cust = $this->input->post('cust_name');
    $dtstart = new DateTime($this->input->post('date_start'));
    $dtend = new DateTime($this->input->post('date_end'));
    $start_date = $dtstart->format('Y-m-d ');        
    $end_date = $dtend->format('Y-m-d ');        


    if ((isset($cust) && !empty($cust)) && (isset($start_date) && !empty($start_date)) && (isset($end_date) && !empty($end_date))){

        $this->db->select('t1.cust_name, t1.act_type, t1.act_detail, t1.date_added, t1.date_modified, t1.act_notes')
                ->from('activity as t1')
                ->join('user as t2', 't1.user_id = t2.user_id', 'LEFT')
                ->where('t1.cust_name', $cust)
                ->where('t2.user_id', $user)
                ->where('DATE(t1.date_added) >= ', $start_date)
                ->where('DATE(t1.date_modified) <= ', $end_date);
        $query = $this->db->get();
        $result = $query->result_array();                        

    if ($result) {
        $this->output->set_output(json_encode([
            'result' => 1,
            'data' => $query->result_array()
        ]));
        return false;            
    }
    $this->output->set_output(json_encode([
        'result' => 0,
        'error' => 'Could not find data.'
    ]));

    }

在我的本地计算机上,它返回相应的记录,但是在实时服务器上,它返回0。

2 个答案:

答案 0 :(得分:0)

您没有其他声明:

<?php

if ((isset($cust) && !empty($cust)) && (isset($start_date) && !empty($start_date)) && (isset($end_date) && !empty($end_date))){

        $this->db->select('t1.cust_name, t1.act_type, t1.act_detail, t1.date_added, t1.date_modified, t1.act_notes')
                ->from('activity as t1')
                ->join('user as t2', 't1.user_id = t2.user_id', 'LEFT')
                ->where('t1.cust_name', $cust)
                ->where('t2.user_id', $user)
                ->where('DATE(t1.date_added) >= ', $start_date)
                ->where('DATE(t1.date_modified) <= ', $end_date);
        $query = $this->db->get();
        $result = $query->result_array();                        

    if ($result) {
        $this->output->set_output(json_encode([
            'result' => 1,
            'data' => $query->result_array()
        ]));
        return false;            
    }else{
        $this->output->set_output(json_encode([
            'result' => 0,
            'error' => 'Failed Query'
        ]));
    }
}else{
        $this->output->set_output(json_encode([
            'result' => 0,
            'error' => 'Values Not Set'
        ]));
}

?>

如果这不是将return false;放回原处的函数,则可能是为什么它一直运行的原因。

答案 1 :(得分:0)

我可能会重写您的代码,包括try/catch并强制显示错误。不要忘记,在实时服务器中,大多数错误都设置为隐藏。因此,最终用户不会看到明显的错误。

要调试

try {
   //put your code hear
} catch (\Exception $e) {
   die('An exception :- '. $e->getMessage());
}

如果仍然不能带给您足够的信息来进行调试,请在php文件的开头添加以下几行。

ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

不要忘记,解决问题后,请删除或注释掉以上三个错误报告行。因为您不想向最终用户显示内部错误。

希望这可以帮助您调试问题。

干杯。