PHP kézikönyv
Előző
Következő
Az OCIBindByName() a variable paraméterben megadott PHP változót köti a ph_name Az OCIBindByName() a variable paraméterben megadott PHP változót köti a ph_name paraméterben megadott Oracle értékez (placeholder-hez).
Akár bemeneti, akár kimeneti értékként kerül felhasználásra, ez futásidőben dől el, és a szükséges tárolási kapacitás lefoglalásra kerül.
A length paraméter adja meg a kötés maximális méretét.
Ha a length paramétert -1 értékkel adod meg, az OCIBindByName() a variable paraméterben megadott változó aktuális hosszát veszi maximum méretnek.
Ha absztrakt adattípust kell kötnöd (például LOB, ROWID vagy BFILE), először az OCINewDescriptor() függvényt kell használnod.
A length paraméternek nincs jelentősége absztrakt adattípusok használatakor, mindenképpen -1 értékre kell állítani ebben az esetben.
A type paraméter adja meg az Oracle-nek, hogy milyen leírót szeretnél használni.
Lehetséges értékek:
OCI_B_FILE (Binary-File), OCI_B_CFILE (Character-File), OCI_B_CLOB (Character-LOB), OCI_B_BLOB (Binary-LOB) és OCI_B_ROWID (ROWID).
Példa 1.
OCIBindByName
?php / * OCIBindByName példa - thies@thieso.net (980221) Három rekord felvétele a "dolgozok "táblába, és a ROWID használata az adatok frissítésére rögtön a felvitel után. * / $conn = OCILogon("scott" ,"tiger"); $stmt = OCIParse($conn ,"insert into dolgozok (dolgozoid, dnev)". "values (:dolgozoid,:dnev) ". "returning ROWID into :rid"); $adatok = array(1111 = "Larry", 2222 = "Bill", 3333 = "Jim"); $rowid = OCINewDescriptor($conn, OCI_D_ROWID); OCIBindByName($stmt ,":dolgozoid", $dolgozoid, 32); OCIBindByName($stmt ,":dnev", $dnev, 32); OCIBindByName($stmt ,":rid", $rowid, -1, OCI_B_ROWID); $update = OCIParse($conn, "update dolgozok set fizetes = :fizetes". "where ROWID = :rid"); OCIBindByName($update ,":rid", $rowid, -1, OCI_B_ROWID); OCIBindByName($update ,":fizetes", $fizetes, 32); $fizetes = 10000; while (list($dolgozoid,$dnev) = each($adatok)) {OCIExecute($stmt); OCIExecute($update);} $rowid - free(); OCIFreeStatement($update); OCIFreeStatement($stmt); $stmt = OCIParse($conn ,"select * from dolgozok where dolgozoid in (1111,2222,3333)"); OCIExecute($stmt); while (OCIFetchInto($stmt, $tomb, OCI_ASSOC)) {var_dump($tomb);} OCIFreeStatement($stmt); / * Töröljük a "szemetünket "a dolgozok táblából.... * / $stmt = OCIParse($conn ,"delete from dolgozok where dolgozoid in (1111,2222,3333)"); OCIExecute($stmt); OCIFreeStatement($stmt); OCILogoff($conn);?
Figyelem
Nem jó ötlet a "magic quotes" szolgáltatást, és az OciBindByName() függvényt egyszerre használni, mivel semmilyen átalakítás nem szükséges a változókon, és bármilyen extra idézőjel, ami az értékekben megjelenik az adatbázisba kerül.
Az OciBindByName() nem tud különbséget tenni a korábban a karaktersorozatban lévő és a "magic quotes "átalakítás során bekerült idézőjelek között.
Előző
Tartalom
Következő
Oracle 8 függvények
Fel