Manual do PHP
Anterior |  | Próxima

# ocibindbyname

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

ocibindbyname -- Passa variáveis PHP para um ambiente de armazenamento do Oracle

## Descrição

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

ocibindbyname() passa uma variável PHP `variable` para um ambiente de armazenamento no Oracle `ph_name`. Se isso for usado para entrada ou saída de dados irá ser determinado "run-time", e o espaço necessário para armazenagem será alocado. O parâmetro `length` seta o comprimento máximo para passar. Se você setar `length` como -1 ocibindbyname() irá usar o comprimento atual da `variable` para setar o comprimento máximo.

Se você precisar passar um tipo de dados abstrato (LOB/ROWID/BFILE) você precisa alocar isso primeiro usando a função ocinewdescriptor(). O `length` não é usado para tipo de dados abstratos e deve ser setado como -1. A variável `type` diz ao Oracle, qual classificação nós queremos usar. Valores possíveis são: OCI_B_FILE (Binary-File), OCI_B_CFILE (Character-File), OCI_B_CLOB (Character-LOB), OCI_B_BLOB (Binary-LOB) e OCI_B_ROWID (ROWID).

Exemplo 1. ocibindbyname() example
`<?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); ?>`

Atenção
É uma má idéia usar magic quotes e ocibindbyname() simultâneamente, nenhuma aspas são necessárias em variáveis que já possuem e alguma aspas magicamente aplicadas irão ser escritas dentro do seu database como ocibindbyname() não está habilitada para distinguir aspas magicamente adicionadas para estas adicionadas intencionalmente.

Anterior | Principal | Próxima
oci_statement_type | Acima | ocicancel