ocibindbyname

(PHP 3 >= 3.0.4, PHP 4, PHP 5)

ocibindbyname --  °ó¶¨Ò»¸ö PHP ±äÁ¿µ½Ò»¸ö Oracle λÖñêÖ¾·û

ÃèÊö

bool ocibindbyname ( resource stmt, string ph_name, mixed &variable [, int maxlength [, int type]] )

ocibindbyname() ²ÎÊý variable °ÑÒ»¸ö PHP ±äÁ¿°ó¶¨µ½ Oracle µÄλÖñêÖ¾·û ph_name¡£¸Ã±äÁ¿ÊÇ·ñ»á±»ÓÃ×÷ÊäÈëÊä³öÊÇÔÚÔËÐÐʱ¾ö¶¨µÄ£¬²¢ÇÒº¯Êý¸ø¸Ã±äÁ¿·ÖÅä±ØÒªµÄ´æ´¢¿Õ¼ä¡£ ²ÎÊý length È·¶¨¸Ã°ó¶¨µÄ×î´ó³¤¶È£¬Èç¹û½« length ÉèΪ £­1£¬º¯Êý ocibindbyname() »áÓøñäÁ¿µÄµ±Ç°³¤¶ÈÈ·¶¨°ó¶¨µÄ×î´ó³¤¶È¡£

Èç¹ûÄãÒª°ó¶¨Ò»¸ö³éÏóÊý¾ÝÀàÐÍ£¨LOB/ROWID/BFILE£©£¬ÄãÐèÒªÏÈÓà ocinewdescriptor() º¯Êý½øÐж¨Î»¡£²ÎÊý length ÔÚÕâÖÖÇé¿öϲ»¿ÉÓã¬Ó¦¸Ã±»ÉèΪ£­1¡£ ²ÎÊý type ¸æËß Oracle ÎÒÃÇÏ£ÍûʹÓÃʲôÑùµÄÃèÊö·û£» ¿ÉÄܵÄֵΪ£º OCI_B_FILE (Binary-File), OCI_B_CFILE (Character-File), OCI_B_CLOB (Character-LOB), OCI_B_BLOB (Binary-LOB) ºÍ OCI_B_ROWID (ROWID)¡£

例子 1. ocibindbyname()

<?php
/* OCIBindByPos example thies at thieso dot net (980221)
  inserts 3 records into emp, and uses the ROWID for updating the
  records just after the insert.
*/

$conn = OCILogon("scott", "tiger");

$stmt = OCIParse($conn, "insert into emp (empno, ename) " .
                       
"values (:empno,:ename) " .
                       
"returning ROWID into :rid");

$data = array(1111 => "Larry", 2222 => "Bill", 3333 => "Jim");

$rowid = OCINewDescriptor($conn, OCI_D_ROWID);

OCIBindByName($stmt, ":empno", $empno, 32);
OCIBindByName($stmt, ":ename", $ename, 32);
OCIBindByName($stmt, ":rid", $rowid, -1, OCI_B_ROWID);

$update = OCIParse($conn, "update emp set sal = :sal where ROWID = :rid");
OCIBindByName($update, ":rid", $rowid, -1, OCI_B_ROWID);
OCIBindByName($update, ":sal", $sal, 32);

$sal = 10000;

while (list(
$empno, $ename) = each($data)) {
    
OCIExecute($stmt);
    
OCIExecute($update);
}

$rowid->free();

OCIFreeStatement($update);
OCIFreeStatement($stmt);

$stmt = OCIParse($conn, "select * from emp where empno in (1111,2222,3333)");
OCIExecute($stmt);
while (
OCIFetchInto($stmt, &$arr, OCI_ASSOC)) {
    
var_dump($arr);
}
OCIFreeStatement($stmt);

/* delete our "junk" from the emp table.... */
$stmt = OCIParse($conn, "delete from emp where empno in (1111,2222,3333)");
OCIExecute($stmt);
OCIFreeStatement($stmt);

OCILogoff($conn);
?>

警告

ͬʱʹÓÃħÊõÒýÓÃºÍ ocibindbyname() º¯ÊýÊÇÒ»¸ö»µÖ÷Ò⣻ÕâÊÇÒòΪ£º1¡¢±»ÒýÓõıäÁ¿²»ÐèÒªÈκÎÒýÓã»2¡¢ÓÉ ocibindbyname() º¯Êý²»ÄÜ·Ö±æ×Ô¶¯Ìí¼ÓµÄÒýÓúÍרÃżÓÉϵÄÒýÓã¬ÕâÑùËùÓÐħÊõÓ¦Óö¼»á±»Ð´µ½Êý¾Ý¿âÖС£