如何在Zend中处理查询错误?

时间:2014-09-15 13:29:55

标签: php zend-framework

我有一个简单的问题。

我正在研究Zend框架2。 我正在尝试通过传递booking_id来进行AJAX调用以从表booking获取所有预订数据。麻烦的是,查询因未知原因而失败。实际查询很复杂,当我将$ booking_id替换为实际的booking_id时,它的工作正常,如#224;' 22432'。因此,我认为查询很好,还有其他一些问题。

但我不知道如何在Ajax调用中获取查询错误/异常。有人可以帮我这个吗?

使用Javascript:

$.post("dashboard/getBookingDataByBookingId", {
        booking_id: bookingId,
    },
    function(data){
        if(data.response == true) {
         alert(data);
        } else {
         alert('failed');
        }
    }, 'json');

控制器

public function getBookingDataByBookingIdAction()
{
  $request = $this->getRequest();
  $response = $this->getResponse();
  if ($request->isPost()) 
  {
    $post_data = $request->getPost();
    $booking_id = $post_data['booking_id'];
    $booking_data = array();
    $booking_data = $this->getBookingTable()->getBookingByUserIdAndBookingId($booking_id);
    if (!$booking_data)
      $response->setContent(\Zend\Json\Json::encode(array('response' => false, 'booking_data' => $booking_data)));
    else {
      $response->setContent(\Zend\Json\Json::encode(array('response' => true, 'booking_data' => $booking_data)));
    }
  }
  return $response;
}

bookingTable模型具有公共功能:

public function getBookingByUserIdAndBookingId($booking_id)
{
   $sql = "Select * from booking where id='".$booking_id."';
   try {
        $statement = $this->adapter->query($sql);
        $res =  $statement->execute();    
        return $res->current();
    } catch (Exception $ex) {
        return $ex;
    }
}

2 个答案:

答案 0 :(得分:0)

您正在发布名为'id'的变量:

{
    id: bookingId,
}

所以你应该以:

的形式访问它
$post_data = $request->getPost();
$booking_id = $post_data['id'];

或更简洁:

$booking_id = $request->getPost('id');

您还应该使用参数化查询来避免SQL注入。

答案 1 :(得分:0)

对于在Ajax调用中获取错误/异常,请使用:

在Google Chrome中使用: POSTMAN 扩展程序

在FireFox用户中: FIREBUG 插件