[英]Laravel: Error Code : 933 Error Message : ORA-00933: SQL command not properly ended Position
[英]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.