我正在尝试在DATE字段中插入用户输入的日期(作为POST变量)并连续获取ORA-01847。这是我到目前为止所拥有的,
$name = strtoupper(trim($_POST['name']));
$dob = date('d-M-y', strtotime($_POST['dob']));
$query = "INSERT INTO TEST_TABLE (TABID, TABNAME, DOB, CREATEDBY) VALUES (SEQ_TAB_TABID.NEXTVAL, :1, TO_DATE(:2, 'DD-MM-YY'), :3)";
$ins = array($name, $dob, $_SESSION['usrid']);
$conn = oci_connect($username, $password, $constr);
$stid = oci_parse($conn, $query);
$count = 1;
foreach ($ins as $i) {
oci_bind_by_name($stid, sprintf(':%d', $count), $i);
$count++;
}
$exec = oci_execute($stid);
我收到的用户输入格式为08/29/2015($ _POST ['dob'])
我一直得到ORA-01847:月中的某一天必须在1月到最后一天之间
我已尝试打印最终的dob,并打印出2015年8月29日。当我使用相同的查询并使用SQL Developer插入时,它可以很好地工作。
我甚至尝试了查询的“非绑定”版本,如下所示:
$query = sprintf("INSERT INTO TEST_TABLE (TABID, TABNAME, DOB, CREATEDBY) VALUES (SEQ_TAB_TABID.NEXTVAL, %s, TO_DATE(%s, 'DD-MM-YY'), %d)", escapeshellarg($name), escapeshellarg($dob), $_SESSION['usrid'])
在这种情况下,我得到了ORA-01858:找到了一个非数字字符,其中有一个数字是预期的
再次当我使用SQL开发人员运行该查询时,它可以工作。
我知道我在这里遗漏了一件小事,但这是我第一次使用PHP和Oracle,我们将非常感谢任何帮助。
答案 0 :(得分:0)
尝试使用正确的格式解析日期:
function BufferLoader(context, cbObj, urlList, callback) {
this.context = context;
this.urlList = urlList;
this.onload = callback;
this.bufferList = new Array();
this.loadCount = 0;
this.callBackObj = cbObj;
}
BufferLoader.prototype.loadBuffer = function(url, index) {
// Load buffer asynchronously
var request = new XMLHttpRequest();
request.open("GET", url, true);
request.responseType = "arraybuffer";
var loader = this;
request.onload = function() {
// Asynchronously decode the audio file data in request.response
loader.context.decodeAudioData(
request.response,
function(buffer) {
if (!buffer) {
console.log('error decoding file data: ' + url);
return;
}
loader.bufferList[index] = buffer;
if (++loader.loadCount == loader.urlList.length)
loader.onload.apply(loader.callBackObj, [loader.bufferList]);
},
function(error) {
console.error('decodeAudioData error', error);
}
);
}
request.onerror = function() {
console.log('BufferLoader: XHR error');
}
request.send();
}
BufferLoader.prototype.load = function() {
for (var i = 0; i < this.urlList.length; ++i)
this.loadBuffer(this.urlList[i], i);
}