[英]PHP ORACLE Select ORA-00933 SQL Command Not Properly Ended
I keep getting an ORA-00933 error on a query I am using to create a csv file using Ajax. 我正在使用Ajax创建csv文件的查询中不断收到ORA-00933错误。 I am returning a csv but it always contains the ORA-00933 error.
我正在返回一个csv,但它始终包含ORA-00933错误。 I will link the PHP code below that is causing the error and then I will link the error.
我将链接下面导致错误的PHP代码,然后链接该错误。 Thank you for the help.
感谢您的帮助。
<?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;
?>
Error in CSV: CSV错误:
<b>Warning:</b><br/>oci_execute() [<a href='function.oci-execute'>function.oci-execute</a>]: ORA-00933: SQL command not properly ended<br />
You need single quotes enclosing the date format TO_DATE(:startT, 'dd-mm-yy')
您需要使用单引号将日期格式括起来
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";
And other query without []
in SELECT
而如果没有其他查询
[]
在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.