 |
oci_bind_by_name (PHP 5) oci_bind_by_name --
Lega una variabile PHP ad un segnaposto Oracle
Descrizionebool oci_bind_by_name ( resource stmt, string nome_ph, mixed &variabile [, int lungmax [, int tipo]] )
oci_bind_by_name() collega la variabile PHP
variable al segnaposto Oracle
ph_name. L'utilizzo in modalità
input o output sarà determinato a run-time, e lo spazio di memoria
necessario sarà allocato. Il parametro
lungmax imposta la lunghezza massima
del collegamento. Se si imposta lungmax a -1
oci_bind_by_name() userà l'attuale lunghezza di
variabile per impostare la lunghezza massima.
Se si deve collegare un tipo dato astratto (LOB/ROWID/BFILE)
occorre innanzitutto allocarlo usando la funzione
oci_new_descriptor(). Il parametro
lungmax non è usato con i tipi dati astratti
e dovrebbe essere impostato a -1. La variabile tipo
informa oracle sul tipo di descrittore che si vuole usare. I valori possibili
sono:
OCI_B_FILE - per i BFILE;
OCI_B_CFILE - per i CFILE;
OCI_B_CLOB - per i CLOB;
OCI_B_BLOB - per i BLOB;
OCI_B_ROWID - per i ROWID;
OCI_B_NTY - per i named datatype;
OCI_B_CURSOR - per i cursori precedentemente
creati con oci_new_cursor().
Esempio 1. esempio di ocibindbyname()
<?php /* esempio di oci_bind_by_name thies at thieso dot net (980221) inserisce 3 tuple in emp, e usa ROWID per aggiornare le tuple subito dopo l'inserimento. */
$conn = oci_connect("scott", "tiger");
$stmt = oci_parse($conn, " INSERT INTO emp (empno, ename) VALUES (:empno,:ename) RETURNING ROWID INTO :rid ");
$data = array( 1111 => "Larry", 2222 => "Bill", 3333 => "Jim" );
$rowid = oci_new_descriptor($conn, OCI_D_ROWID);
oci_bind_by_name($stmt, ":empno", $empno, 32); oci_bind_by_name($stmt, ":ename", $ename, 32); oci_bind_by_name($stmt, ":rid", $rowid, -1, OCI_B_ROWID);
$update = oci_parse($conn, " UPDATE emp SET sal = :sal WHERE ROWID = :rid "); oci_bind_by_name($update, ":rid", $rowid, -1, OCI_B_ROWID); oci_bind_by_name($update, ":sal", $sal, 32);
$sal = 10000;
while (list($empno, $ename) = each($data)) { oci_execute($stmt); oci_execute($update); }
$rowid->free();
oci_free_statement($update); oci_free_statement($stmt);
$stmt = oci_parse($conn, " SELECT * FROM emp WHERE empno IN (1111,2222,3333) "); oci_execute($stmt); while ($row = oci_fetch_assoc($stmt)) { var_dump($row); }
oci_free_statement($stmt);
/* delete our "junk" from the emp table.... */ $stmt = oci_parse($conn, " DELETE FROM emp WHERE empno IN (1111,2222,3333) "); oci_execute($stmt); oci_free_statement($stmt);
oci_close($conn); ?>
|
|
Ricordarsi che questa funzione elimina gli spazi alla fine della riga. Vedere il seguente
esempio:
Esempio 2. esempio di oci_bind_by_name()
<?php $connection = oci_connect('apelsin','kanistra'); $query = "INSERT INTO test_table VALUES(:id, :text)";
$statement = oci_parse($query); oci_bind_by_name($statement, ":id", 1); oci_bind_by_name($statement, ":text", "Qui ci sono degli spazi "); oci_execute($statement); /* Questo codice inserisce nel DB la stringa 'Qui ci sono degli spazi', senza gli spazi finali */ ?>
|
|
Esempio 3. esempio di oci_bind_by_name()
<?php $connection = oci_connect('apelsin','kanistra'); $query = "INSERT INTO test_table VALUES(:id, 'Qui ci sono degli spazi ')";
$statement = oci_parse($query); oci_bind_by_name($statement, ":id", 1); oci_execute($statement); /* Questo codice aggiunge 'Qui ci sono degli spazi ', mantenendo gli spazi */ ?>
|
|
Avvertimento |
Non utilizzare le magic_quotes_gpc o
addslashes() e oci_bind_by_name()
simultaneamente in quanto le virgolette non sono necessarie nelle variabili
e qualsiasi virgoletta aggiunta automaticamente verrà scritta nel database dal momento che
ocibindbyname() non è in grado di distinguere
le virgolette aggiunte automaticamente da quelle intenzionali.
|
Restituisce TRUE in caso di successo, FALSE in caso di fallimento.
Nota:
Nelle versioni di PHP antecedenti la 5.0.0 si deve usare ocibindbyname().
Questo nome può ancora essere utilizzato, è rimasto come alias di
oci_bind_by_name() per mantenere la compatibilità.
Ciò è comunque deprecato e non raccomandato.
|  |