使用oci_execute

时间:2015-08-29 23:52:13

标签: php oracle oci

我正在尝试在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,我们将非常感谢任何帮助。

1 个答案:

答案 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);
}