【发布时间】:2016-03-19 05:03:52
【问题描述】:
我很难用我的代码解决这个问题。我还是 Oracle/PHP/SQL 的新手。我已经尝试了很多解决方案,但都没有奏效。这是代码和错误。
$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))))";
警告:oci_execute(): ORA-00907: 缺少右括号
我是不是在某个地方做错了什么?
【问题讨论】:
-
好吧,就像它说的那样,你的括号不匹配。首先将该查询获取到任何 sql 工作表(例如,您可以使用 sqldeveloper),使其与一些值一起工作,然后才将其粘贴到 PHP 并用
'".$var.'"替换常量值。顺便说一下,熟悉prepared statements,如果你写这样的语句,你总有一天会被SQL注入所击中。
标签: php sql oracle parentheses