簡體   English   中英

PHP ORACLE Select ORA-00933 SQL命令未正確結束

[英]PHP ORACLE Select ORA-00933 SQL Command Not Properly Ended

我正在使用Ajax創建csv文件的查詢中不斷收到ORA-00933錯誤。 我正在返回一個csv,但它始終包含ORA-00933錯誤。 我將鏈接下面導致錯誤的PHP代碼,然后鏈接該錯誤。 感謝您的幫助。

<?php
$rangeD_Echo = $_POST["rangeD"];
$year_Echo = $_POST["year"];

$yearTruncation =  substr($year_Echo, 2);
$yearTruncationMinusOne = $yearTruncation-1;
$Start = '1-Oct-'.$yearTruncationMinusOne;
$End = '30-Sep-'.$yearTruncation;

if ($rangeD_Echo == 'Annual')
{
    $Start = '1-Oct-'.$yearTruncationMinusOne;
    $End = '30-Sep-'.$yearTruncation;
}
else if ($rangeD_Echo == 'Q1 FY')
{
    $Start = '1-Oct-'.$yearTruncationMinusOne;
    $End = '31-Dec-'.$yearTruncationMinusOne;   
}
else if ($rangeD_Echo == 'Q2 FY')
{
    $Start = '1-Jan-'.$yearTruncation;
    $End = '31-Mar-'.$yearTruncation;
}
else if ($rangeD_Echo == 'Q3 FY')
{
    $Start = '1-Apr-'.$yearTruncation;
    $End = '30-Jun-'.$yearTruncation;   
}
else if ($rangeD_Echo == 'Q4 FY')
{
    $Start = '1-Jul-'.$yearTruncation;
    $End = '30-Sep-'.$yearTruncation;
}


$Start = settype($Start, 'string');
$End = settype($End, 'string');
/*** CSV File Creation Land ***/
header('Content-Type: text/csv; charset=utf-8');
header('Content-Disposition: attachment; filename=d-Report.csv');

$output = fopen('php://output', 'w');

fputcsv($output, array('Week Ending', 'No', 'Project Title', 'Project Contact', 
                       'Org', 'SNo', 'NNo', 'Verified By', 'Date Verified', 
                       'Comments', 'Notes'));

/*** connect to SQL DB ***/
$dbe = get_db_connection('db');
$dbe->connect();
/*** connect or ORACLE DB ***/
$db = oci_connect('QUERY','pw','server:1521/view');
if (!$db){
  $e = oci_error();
  trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
} 

$query = "SELECT * FROM dbo.dbview WHERE (STATUS = 'ACTIVE' OR STATUS = 'CLOSED') AND PNUMBER <>' ' AND AMENDMENT_DATE_CREATED BETWEEN TO_DATE(:startT, dd-mm-yy) AND TO_DATE(:doneT, dd-mm-yy)
                                                                                                                    ORDER BY AMENDMENT_DATE_CREATED DESC";                                                                                                      
$runQuery = oci_parse($db, $query);
oci_bind_by_name($runQuery, ":startT", $Start);
oci_bind_by_name($runQuery, ":doneT", $End);
oci_execute($runQuery);

while($row = oci_fetch_array($runQuery, OCI_ASSOC+OCI_RETURN_NULLS))
{
    $WNumber = $row['PNUMBER']."-".$row['DNUMBER'];

    $querySQLDB = "SELECT [Verified_By], [Comments], [Notes], [Date_Verified] 
           FROM dbo.Information 
           WHERE dbo.Information.W_Key_ID = '$WNumber' 
           ORDER BY dbo.Information.ID DESC";
    $dbe->query($querySQLDB);
    $sqlData = $dbe->fetch();

    $dateNoTime = str_replace("12:00:00:000AM"," ",$sqlData['Date_Verified']);

    fputcsv($output, array($row['AMENDMENT_DATE_CREATED'], $WNumber, $row['TITLE'], $row['NAME'], 
                           $row['ORG'], $PNumber, $sqlData['Verified_By'], $dateNoTime,
                           $sqlData['Comments'], $sqlData['Notes']));

}
fclose($output);
echo $output;
?>

CSV錯誤:

<b>Warning:</b><br/>oci_execute() [<a href='function.oci-execute'>function.oci-execute</a>]: ORA-00933: SQL command not properly ended<br />

您需要使用單引號將日期格式括​​起來TO_DATE(:startT, 'dd-mm-yy')

$query = "SELECT * FROM dbo.dbview
         WHERE (STATUS = 'ACTIVE' OR STATUS = 'CLOSED')
          AND NUMBER <> ' '
          AND AMENDMENT_DATE_CREATED
        BETWEEN TO_DATE(:startT, 'dd-mm-yy')  AND TO_DATE(:doneT, 'dd-mm-yy')
        ORDER BY AMENDMENT_DATE_CREATED DESC";

而如果沒有其他查詢[]SELECT

  $querySQLDB = "SELECT Verified_By, Comments, Notes, Date_Verified 
           FROM dbo.Information 
           WHERE dbo.Information.W_Key_ID = '$WNumber' 
           ORDER BY dbo.Information.ID DESC";

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM