0

我的控制器动作

public function abcsajaxAction(){
  $start_date = $this->_getParam('start_date');
  $end_date   = $this->_getParam('end_date');


  $myquery; //myquery
  //zend pagination
  }

我从这里调用这个动作我的意思是我的 js

$("#show_history_call_logs").click(function(){
 var pass = true;
 var start_date    = $("#start_date").val();
 var end_date      = $("#end_date").val();
 var page_to_get   = $('input[name=hidden]').val();

 //some validation
 if(pass == true){
var href= "http://localhost/abc/xyz/index.php/login/"+page_to_get+"/";
var data ='start_date=' + start_date + '&end_date=' + end_date + '&option_call_log=' + option_call_log + '&option_call_log_asc_desc=' + option_call_log_asc_desc;
 $.ajax({ type: "GET",
           url: href,
          data: data,
          success: function(response){
           $('#paged-data-container').html(response);
            }
           });
           return false;
        }

现在在这个活动上,我的意思是 $("#show_history_call_logs").click()

它每次都工作正常, 但正如我所说,这个动作也有分页,所以现在当我点击任何分页时,他们会去这个动作,但因为他们没有得到这些

$start_date = $this->_getParam('start_date');
$end_date   = $this->_getParam('end_date');

在这种情况下,它给了我这个错误

Message: SQLSTATE[HY093]: Invalid parameter number: no parameters were bound

在另一方面,他们得到我的意思是通过事件。那么我应该如何去使它在两个场景中都起作用。

4

2 回答 2

0

我不明白你到底想达到什么目的。您的 sql 查询中有开始和结束日期。所以你应该

  • 设置参数
  • 重写您的查询,以便在不存在的情况下不考虑日期

例如以这种方式

$start_date = $this->_getParam('start_date', null);

...

$sql = $this->select()->from(x);

if(!empty($startDate)) {

$sql->where('start_date < ?', $startDate)

}

于 2012-02-16T08:57:21.383 回答
0

未经测试,但尝试可能有效

if(empty($start_date) && empty($end_date)){
$select = $registry['select']; 
   }
else{
      $select; //your new query
 }

 if(!empty($start_date) && !empty($end_date)){
   Zend_Registry::set('select',$select);
  }
于 2012-02-16T10:48:33.953 回答