dsozqcx9668 2015-12-13 18:36
浏览 128

警告:oci_execute():ORA-00907:缺少右括号

I'm having a tough time solving this problem with my code. I'm still new to Oracle/PHP/SQL. I've tried a lot of solution and none of it is working. Here's the code and error.

$searchsql = "
    SELECT rm.room_ID, rm.room_no
      FROM bsi_room rm
     WHERE rm.roomtype_id = ".$roomTypeId."
           AND rm.capacity_id = ".$capcityid."".$extraSearchParam."
           AND rm.room_id NOT IN
                  (SELECT resv.room_id
                     FROM bsi_reservation resv, bsi_bookings boks
                    WHERE     boks.is_deleted = FALSE
                          AND resv.bookings_id = boks.booking_id
                          AND resv.room_type_id = ".$roomTypeId."
                          AND (('".$this->mysqlCheckInDate."' BETWEEN boks.start_date AND DATE_SUB(boks.end_date, INTERVAL 1 DAY))
                           OR (DATE_SUB('".$this->mysqlCheckOutDate."', INTERVAL 1 DAY) BETWEEN boks.start_date AND DATE_SUB(boks.end_date, INTERVAL 1 DAY))               OR (boks.start_date BETWEEN '".$this->mysqlCheckInDate."' AND DATE_SUB('".$this->mysqlCheckOutDate."', INTERVAL 1 DAY))                         OR (DATE_SUB(boks.end_date, INTERVAL 1 DAY) BETWEEN '".$this->mysqlCheckInDate."' AND DATE_SUB('".$this->mysqlCheckOutDate."', INTERVAL 1 DAY))))";

Warning: oci_execute(): ORA-00907: missing right parenthesis

Am I doing something wrong somewhere?

  • 写回答

2条回答 默认 最新

  • drwn65609 2015-12-13 19:02
    关注

    The line:

    AND (('".$this->mysqlCheckInDate."' BETWEEN boks.start_date AND DATE_SUB(boks.end_date, INTERVAL 1 DAY))))
    

    Should have 3 right parenthesis chars instead of 4. The subquery block ends too early.

    评论

报告相同问题?