0
我很难用我的代码解决这个问题。我仍然是Oracle/PHP/SQL的新手。我已经尝试了很多解决方案,但都没有工作。这是代码和错误。警告:oci_execute():ORA-00907:缺少右括号
$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。'”'替换常量值。顺便说一句,熟悉准备好的语句,有一天你会被SQL注入攻击,如果你写这样的语句。 – Timekiller