Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 警告:oci_execute():ORA-00907:缺少右括号_Php_Sql_Oracle_Parentheses - Fatal编程技术网

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

Php 警告:oci_execute():ORA-00907:缺少右括号,php,sql,oracle,parentheses,Php,Sql,Oracle,Parentheses,我的代码很难解决这个问题。我还不熟悉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."

我的代码很难解决这个问题。我还不熟悉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:缺少右括号

我在什么地方做错了什么吗?

台词:

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

应该有3个右括号字符,而不是4个。子查询块结束得太早。

明白了。我忘了给所有日期数据类型添加日期。现在没关系了,就像上面说的,括号不匹配。首先将该查询获取到任何sql工作表(例如,您可以使用sqldeveloper),使其与一些值一起工作,然后将其粘贴到PHP,并将常量值替换为
'“$var.”
。顺便说一句,熟悉准备好的语句,如果您编写这样的语句,总有一天会受到SQL注入的影响。