2014年1月17日金曜日

[メモ] oci_bind_by_nameでのbindする値がNULL時のエラー対策。PHP 4.4.9 / oci8 Revision: 1.273 / Oracle Version 10.1



PHP Version 4.4.9 / oci8 Revision: 1.273 / Oracle Version  10.1
で oci_bind_by_name($stmt, ':dummy', $dummy);
$dummy が NULLの時、oci_bind_by_nameはなぜかエラーとなります。

エラー内容:
Allowed memory size of 8388608 bytes exhausted (tried to allocate -153092211 bytes)

ググっても対策方法が出て来ないのでトライ&エラーで対応。

$dummy = "";
$dummy = null;
どれもだめで、以下にするとOK

$dummy .= "";
空文字を連結するとなぜかOKとなる。多分変数$dummyのメモリー上に
何かがセットされて、oci_bind_by_nameの方で正しくNULLが認識された!?


$sql = "select sysdate from dual where sysdate > :dummy";
if($dummy == ""){
          $dummy .= "";
}
$stmt = oci_parse($Conn,$sql);
oci_bind_by_name($stmt, ':dummy', $dummy);


0 件のコメント:

コメントを投稿