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