ADOdb dokumentáció - 1 rész - Bemutatás, telepítés, támogatások

Címkék: web, adodb, adatbázis, php
Létrehozva: 2007. január 8. 23:36
ADOdb fügvénykönyvtárt mindenkinek. Bedaráltattam az eredetit egy fordítóprogrammal, majd megpróbáltam helyretenni a mondatokat és ez lett belőle. Nem gondoltam hogy ilyen nagy munka lesz. Nem túl szép, de hasznos lehet olyan gagyi angolosoknak mint én. A fordítás még nem teljes.... de hamarosan meglesz.

ADOdb dokumentáció
ADOdb függvénytár PHP-hoz

Hasznos ADOdb oldalak: Letöltés További dokumentumok

Bemutatás
Egyedülálló jellemzők
Mire használják az emberek az ADOdb-t
Jellemzőkérések és hibajegyzékek
Installation ( Üzembehelyezés )
Minimális Install
Csatlakozás adatbázishoz, kezdeti kód felépítése

Nagy gyorsaságú ADOdb - hangolási tippek
Biztonságosan bővíteni és módosítani ADOdb-t
PHP5 jellemzők

Támogatott adatbázisok

Bemutatás

A PHP adatbázis hozzáférési funkcióit nem szabványosítják. Ezért szükséges létrehoztunk egy adatbázis osztálykönyvtárt, hogy rejtse el az a különböző adatbázisok, API -k közti különbségeket, (beépíti a különbségeket) tehát könnyen tudunk kapcsolódni adatbázisokhoz. PHP 4.0.5 vagy későbbit használ (mert használjuk tömb alapú str_replace -t ).

Jelenleg támogatjuk: MySQL, Oracle, Microsoft SQL Server, Sybase, Sybase SQL Anywhere, Informix, PostgreSQL, FrontBase, SQLite, Interbase (Firebird és Borland változatok), Foxpro, Access, ADO, DB2, SAP DB és ODBC. Mi sikereinkről voltak hírek, hogy csatlakozztunk Progress -hez és CacheLite -hoz ODBC -n keresztül. Reméljük, hogy több ember fog hozzájárulni más-adatbázisok támogatásának megvalósításához.

PHP4 támogatja a munkamenet változókat. Tudod tárolni a munkamenet információdat, amit hordozhatóságra és skálázhatóságra használhatsz az ADOdb -vel. Lássad adodb-session.php -t több információért.

Ugyancsak olvasd el a tips_portable_sql.htm íráson levő tippeket a hordozható SQL írásáról.

ADOdb egyedülálló jellemzői

  • Könnyű Windows programozóknak alkalmazkodni mert a konvencióik közül sok hasonló, a Microsoftnak ADO -nak.
  • Más különböző PHP adatbázisosztályoktól eltérően, amik csak válogatott állításokra összpontosítanak, támogatáskódot nyújtunk hogy olyan beillesztéseket és frissítéseket kezeljünk, amik gyorsan több adatbázissal kompatibilisek. Módszereket nyújtanak dátumkezelésre, szövegösszefűzésre és szövegből idézet karakterek kezelésére, különböző adatbázisokhoz.
  • Egy metatype rendszer be van építve, hogy meg tudjuk állapítani kint, hogy a típusok, mint például CHAR, TEXT és STRING, különböző adatbázisokban ekvivalensek.
  • Könnyen elsajátítható, mert az adatbázis alárendelt kód egésze elraktározódik a törzs funkciókban. Neked nem kell elsajátítanod az osztályok alaplogikáját.
  • Hordozható tábla és index a datadict osztályokkal.
  • Adatbázis-teljesítményfigyelés és SQL hangolás a performance monitoring-osztályokkal.
  • Adatbázis által támogatott munkamenet a session management osztályokkal. Munkamenet lejáratértesítés támogat.
  • Object-Relational Mapping ADOdb_Active_Record osztályokat használ.

Hogyan használják az emberek az ADOdb-t

Itt van annak néhány példája, hogy hogyan használják az emberek az ADOdb-t, (egy sokkal hosszabb listáért látogassad meg adodb-cool-apps):
  • PhpLens egy olyan kereskedelmi adatrács összetevő, ami minden a ügyes Web designernek és a komoly programozóknak is hasznos lehet, hogy könnyen adatbázisokat tartsanak fenn és fejlesszék őket a Weben. ADOdb szerzője által fejlődött.
  • PHAkt: PHP Extension DreamWeaver Ultradev megengedi neked, hogy PHP scriptet írj egy népszerű weblapszerkesztőben. Az adatbázis-kezelésről ADOdb gondoskodik.
  • Analysis Console Intrusion Databases (ACID): PHP központú elemzésű motor, adatbázisba ment biztonsági incidenseket, mint például IDSes és a tűzfalak, (e.g. Horkantás, ipchains). Római Danyliw által.
  • PostNuke egy nagyon népszerű szabad tartalom menedzsmentrendszer és weblog rendszer. Teljes CSS támogatás, HTML 4.01 transitional igazodás egészen, fejlett blocks rendszer, és van teljesen többnyelvű támogatás.
  • EasyPublish CMS egy másik szabad tartalom menedzsmentrendszer, információt és integrált modulokat szerkeszthetsz az interneten, intraneten és extranet-sites. Norvégiából.
  • NOLA egy kedvelt könyvelés, leltár és munkafolyamat alkalmazás. GPL license, és Noguska fejleszti.

Jellemzőkérések és hibajegyzékek

A jellemzőkérések és hibajegyzékek kérhetők emailben jlim#natsoft.com.my vagy megtekinthető a http://phplens.com/lens/lensforum/topics.php?id=4. címen levő ADOdb Help fórumokon.

Üzembehelyezési útmutató

Arról győződjünk meg, hogy a futtatott PHP 4.0.5-ös vagy későbbi. Kicsomagoljuk ki a fájlokat egy mappába, hozzáférhető helyre a webszervereden.

Hogy tesztelj, próbálj meg módosítani a gyakorlati példák közül néhányat. Győződj meg arról, hogy helyesen testre szabod a kapcsolatbeállításokat. Tudsz hibakeresés is használni $db->debug = true; mutatott lent:

<?php
     include('adodb/adodb.inc.php');
   $db = ADONewConnection($dbdriver); // 'mysql' vagy 'postgres'
     $db->debug = true;
     $db->Connect($server, $user, $password, $database);
     $rs = $db->Execute('select * from some_small_table');
   print "<pre>";
      print_r($rs->GetRows());
        print "</pre>";
?>

Minimális üzembehelyezés

Azoknak a fejlesztők, akik a minimális ADOdb-t akarják használni , szűkölködni fognak:

  • adodb.inc.php
  • adodb-lib.inc.php
  • adodb-time.inc.php
  • drivers/adodb-$database.inc.php
  • license.txt (törvényes okokért)
  • adodb-php4.inc.php
  • adodb-iterator.inc.php (php5 funkcionalitás)
Szabadon választható:
  • adodb-error.inc.php és lang/adodb-$lang.inc.php (ha használsz MetaError())
  • adodb-csvlib.inc.php (ha gyorsítótárazott recordsetseket használsz - CacheExecute(), , stb)
  • adodb-exceptions.inc.php és adodb-errorhandler.inc.php (ha adodb hibakezelőt vagy php5 kivételeket használsz).
  • adodb-active-record.inc.php ha használod a Active Records.

Kapcsolódási példák

Miközben futtatja ADOdb-t, legalább két fájl töltődik be. Elsődleges az adodb/adodb.inc.php, ami tartalmaz az összes függvényt, amit használ minden adatbázis-osztály. A kód, ami jellemző a használt adatbázisra, az adodb/driver/adodb-????.inc.php fájlban van.

Például, csatlakozni egy mysql adatbázishoz:

include(/path/to/set/here/adodb.inc.php)
$conn* = &ADONewConnection('mysql')

Amikor neked csatlakoznod kell egy adatbázishoz, létrehozol egy kapcsolat objektumot, ami használja az ADONewConnection($driver) függvényt. NewADOConnection($driver) egy ugyanarra a függvényre illő alternatív név.

Ennél a pontnál nem csatlakozol az adatbázishoz (igaz átadsz egy dsn -t). Neked először döntened kell, hogy állandó vagy nem állandó kapcsolatokat használsz. Az állandó kapcsolatok előnye az, hogy ők gyorsabbak, mivel az adatbáziskapcsolat sohasem zárt (ráadásul amikor hívod Close()). A nem állandó kapcsolatok sokkal kevesebb erőforrást használnak fel, csökken a kockázata az adatbázisod és a webszervered túlterhelése.

Állandó kapcsolatokhoz használjad a $conn->PConnect(), vagy $conn->Connect() nem állandó kapcsolatokra. Néhány adatbázis-vezető támogatja NConnect(), mely kényszeríti egy új kapcsolat teremtését.

Kapcsolat gotcha: Ha létrehozol két kapcsolatot, de mindkettő ugyanazokat a felhasználói nevet és jelszót használja, PHP ugyanazt a kapcsolatot fogja megosztani. Ez problémákat okozhat a kapcsolódáskor különböző adatbázisoknál. A megoldás, mindig különböző felhasználói nevet használni különböző adatbázisokhoz, vagy használj NConnect().

Adat forrás név (DSN) támogatás

ADOdb 4.51 -től van, tudsz csatlakozni egy adatbázishoz azáltal, hogy átadsz egy dsn-t aNewADOConnection(), vagy ADONewConnection, ami ugyanaz a függvényeknek. A dsn formátum:

$driver://$username:$password@hostname/$database?options[=value]

NewADOConnection() neked belsőleg hívja Connect() vagy PConnect(). Ha a kapcsolat elromlik, hamis visszaküldik.

# nem állandó kapcsolat
$dsn = 'mysql://root:pwd@localhost/mydb';   
$db = NewADOConnection($dsn);
if (!$db) die("Connection failed");
# no need to call connect/pconnect!
$arr = $db->GetArray("select * from table");
# állandó kapcsolat 
$dsn2 = 'mysql://root:pwd@localhost/mydb?persist';

Ha neked speciális karaktereid, mint például /:?_, vannak a dsn-edben, akkor először rawurlencode:

$pwd = rawurlencode($pwd);
   $dsn = "mysql://root:$pwd@localhost/mydb";
   $dsn2=rawurlencode("sybase_ase")."://user:pass@host/path?query";

Szabályos opciók a következők:

Minden driver-hez 'persist', 'persistent', 'debug', 'fetchmode', 'new'
Interbase/Firebird 'dialect','charset','buffers','role'
M'SOFT HŰHÓ 'charpage'
MySQL 'clientflags'
MySQLi 'port', 'socket', 'clientflags'
Oci8 'nls_date_format','charset'

 

Minden driver-nek, mikor az opciót persist vagy persistent állítjuk be, egy állandó erőltetett kapcsolat jön létre; hasonlóan, mikor new beállítást használjuk, azután egy új kapcsolatot fog létrehozni miközben használja NConnectet, ha a mögöttes driver támogatja azt. A debug opció hibaelhárítást tesz lehetővé. A fetchmode hívja SetFetchMode(). Ha nem határozzuk meg az opció értékét, akkor az értéket beállít 1-re.

ADOdb DSN verzió kompatibilis 1.0 PEAR DB DSN formátummal.

Példák adatbázisokhoz kapcsolódásra

MySQL és a legtöbb Más adatbázis Drivers

A MySQL kapcsolatok nagyon lényegretörők, és a paraméterek hasonlóak mysql_connect -hez:

$conn = &ADONewConnection('mysql'); 
$conn->PConnect('localhost','userid','password','database');
# vagy dsn
$dsn = 'mysql://user:pwd@localhost/mydb';
$conn = ADONewConnection($dsn);  # no need for Connect()
# vagy álladnó dsn 
$dsn = 'mysql://user:pwd@localhost/mydb?persist';  
$conn = ADONewConnection($dsn);  # no need for PConnect()       
# complex példa: 
$pwd = urlencode($pwd); 
$flags =  MYSQL_CLIENT_COMPRESS; 
$dsn = "mysql://user:$pwd@localhost/mydb?persist&clientflags=$flags"; 
$conn = ADONewConnection($dsn);  # no need for PConnect()

A legtöbb driver-nél tudod használni az általános függvényt: Connect($server, $user, $password, $database), vagy DSN-t ADOdb 4.51 óta. Kivételeket ez alól az itt soroltak.

PDO

PDO, ami csak PHP5-tel dolgozik, elfogad egy driver specific connection string-et:

$conn =& NewADConnection('pdo');
$conn->Connect('mysql:host=localhost',$user,$pwd,$mydb);
$conn->Connect('mysql:host=localhost;dbname=mydb',$user,$pwd);
$conn->Connect("mysql:host=localhost;".
"dbname=mydb;username=$user;password=$pwd");");

A DSN szerkezetet szintén támogatja:

$conn =& NewADConnection("pdo_mysql://user:pwd@localhost/mydb?persist"); 
# persist is optional

PostgreSQL

PostgreSQL 7 és 8 csatlakozó kapcsolatok használnak:

a. a szabványos kapcsolat:

$conn = &ADONewConnection('postgres');  
$conn->PConnect('host=localhost port=5432 dbname=mary');

b. a klasszikus 4 paraméter:

$conn->PConnect('localhost','userid','password','database);

c. dsn:

$dsn = 'postgres://user:pwd@localhost/mydb?persist';  # persist is optional
$conn = ADONewConnection($dsn);  # no need for Connect/PConnect

LDAP

Itt van annak egy példája, hogy kérdez egy LDAP szervert. Köszönet Josh Eldridge-nek a driver-ért és ezért a példáért:

require('/path/to/adodb.inc.php');

/* Make sure to set this BEFORE calling Connect() */
$LDAP_CONNECT_OPTIONS = Array(
       Array ("OPTION_NAME"=>LDAP_OPT_DEREF, "OPTION_VALUE"=>2),
   Array ("OPTION_NAME"=>LDAP_OPT_SIZELIMIT,"OPTION_VALUE"=>100),
      Array ("OPTION_NAME"=>LDAP_OPT_TIMELIMIT,"OPTION_VALUE"=>30),
       Array ("OPTION_NAME"=>LDAP_OPT_PROTOCOL_VERSION,"OPTION_VALUE"=>3),
 Array ("OPTION_NAME"=>LDAP_OPT_ERROR_NUMBER,"OPTION_VALUE"=>13),
    Array ("OPTION_NAME"=>LDAP_OPT_REFERRALS,"OPTION_VALUE"=>FALSE),
    Array ("OPTION_NAME"=>LDAP_OPT_RESTART,"OPTION_VALUE"=>FALSE)
);
$host = 'ldap.baylor.edu';
$ldapbase = 'ou=People,o=Baylor University,c=US';

$ldap = NewADOConnection( 'ldap' );
$ldap->Connect( $host, $user_name='', $password='', $ldapbase );

echo "<pre>";

print_r( $ldap->ServerInfo() );
$ldap->SetFetchMode(ADODB_FETCH_ASSOC);
$userName = 'eldridge';
$filter="(|(CN=$userName*)(sn=$userName*)(givenname=$userName*)(uid=$userName*))";

$rs = $ldap->Execute( $filter );
if ($rs)
 while ($arr = $rs->FetchRow()) {
            print_r($arr);     
  }

$rs = $ldap->Execute( $filter );
if ($rs) 
   while (!$rs->EOF) {
            print_r($rs->fields);        
          $rs->MoveNext();
       } 
        
print_r( $ldap->GetArray( $filter ) );
print_r( $ldap->GetRow( $filter ) );

$ldap->Close();
echo "</pre>";

DSN használata:

$dsn = "ldap://ldap.baylor.edu/ou=People,o=Baylor University,c=US";
$db = NewADOConnection($dsn);

Interbase/Firebird

Meghatározod az adatbázist az $host paraméterben:
$conn = &ADONewConnection('ibase'); 
$conn->PConnect('localhost:c:\ibase\employee.gdb','sysdba','masterkey');

Vagy dsn:

# persist is optional
$dsn = 'firebird://user:pwd@localhost/mydb?persist&dialect=3';
$conn = ADONewConnection($dsn); # nincs szükség Connect/PConnect

SQLite

Sqlite létre fogja hozni az adatbázis-állományt, ha ez nem létezik.
$conn = &ADONewConnection('sqlite');
$conn->PConnect('c:\path\to\sqlite.db'); # sqlite will create if does not exist

Vagy dsn:

$path = urlencode('c:\path\to\sqlite.db');
$dsn = "sqlite://$path/?persist";  # persist is optional
$conn = ADONewConnection($dsn);  # no need for Connect/PConnect

Az Oracle (oci8)

Oci8-al többszörös tudsz csatlakozni. Feljegyzés, amit oci8 az Oracle újabb verzióival jól működtet Pl. 9i és 10g.

a . PHP és Oracle ugyanazon a gépen laknak, alapértelmezésben SID -et használnak.

$conn->Connect(false, 'scott', 'tiger');

b. TNS Name defined in tnsnames.ora (or ONAMES or HOSTNAMES), Pl. 'myTNS'

$conn->PConnect(false, 'scott', 'tiger', 'myTNS');

vagy

$conn->PConnect('myTNS', 'scott', 'tiger');

c. Host cím és SID

$conn->connectSID = true;
$conn->Connect('192.168.0.1', 'scott', 'tiger', 'SID');

d. Host cím és Service név

$conn->Connect('192.168.0.1', 'scott', 'tiger', 'servicename');

e . Oracle kapcsolat:

$cstr = "(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=$host)(PORT=$port))
       (CONNECT_DATA=(SID=$sid)))";
$conn->Connect($cstr, 'scott', 'tiger');

f. ADOdb dsn:

$dsn = 'oci8://user:pwd@tnsname/?persist';  # persist is optional
$conn = ADONewConnection($dsn);  # no need for Connect/PConnect

$dsn = 'oci8://user:pwd@host/sid';
$conn = ADONewConnection($dsn);
    
$dsn = 'oci8://user:pwd@/';   # oracle on local machine
$conn = ADONewConnection($dsn);

Szintén be tudod állítani a charSet-et Oracle 9.2-nek és későbbin, támogatott PHP 4.3.2 óta, ADOdb 4.54:

$conn->charSet = 'we8iso8859p1';
$conn->Connect(...);
     
# or
$dsn = 'oci8://user:pwd@tnsname/?charset=WE8MSWIN1252';
$db = ADONewConnection($dsn);

DSN nélküli ODBC (Access, MSSQL és DB2 példák)

ODBC DSN létre tudjuk hozni az ODBC vezérlőpultal, vagy tudsz használni egy DSN nélküli kapcsolatot. DSN nélküli kapcsolatokathoz, PHP 4.3 vagy későbbi szögséges.

Microsoft Access:

$db =& ADONewConnection('access');
$dsn = "Driver={Microsoft Access Driver ".
"(*.mdb)};Dbq=d:\\northwind.mdb;Uid=Admin;Pwd=;";

$db->Connect($dsn);Microsoft SQL szerver:
$db =& ADONewConnection('odbc_mssql');
$dsn = "Driver={SQL Server};Server=localhost;Database=northwind;";
$db->Connect($dsn,'userid','password');

vagy ha jobban szeretsz használni a mssql driver-t (amely korlátozva van mssql 6.5 -re):
$db =& ADONewConnection('mssql');
$db->Execute('localhost', 'userid', 'password', 'northwind');

DB2 -höz:
$dbms = 'db2'; # or 'odbc_db2' if db2 extension not available
$db =& ADONewConnection($dbms);
$dsn = "driver={IBM db2 odbc DRIVER};Database=sample;".
"hostname=localhost;port=50000;protocol=TCPIP;".
       "uid=root; pwd=secret";
$db->Connect($dsn);

DSN nélküli kapcsolódás ADO -val

Ha 4.3.0 -nál korábbi PHP-t használsz, a DSN nélküli kapcsolatokok csak a Microsoft ADO-jával működnek, ami a Microsoft COM alapú API-ja. Egy példa, ami használja az ADOdb könyvtárt és a Microsoft ADO-ját:
<?php
include('adodb.inc.php'); 
$db = &ADONewConnection("ado_mssql");
print "<h1>Connecting DSN-less $db->databaseType...</h1>";
               
$myDSN="PROVIDER=MSDASQL;DRIVER={SQL Server};"
. "SERVER=flipper;DATABASE=ai;UID=sa;PWD=;";
$db->Connect($myDSN); $rs = $db->Execute("select * from table"); $arr = $rs->GetArray(); print_r($arr); ?>

Nagy gyorsaságú ADOdb - hangolási tippek

ADOdb egy nagy osztálykönyvtár, de a következő előadásban ver minden másik PHP osztálykönyvtárt. Ez azért van mert, leggyorsabb függvényekkel terveztük meg egy rétegezett stílusban, mint egy hagymában, a legbelső rétegben. Ragaszkodj a következő függvényekhez legjobb teljesítmény eléréséhez:

Legbelső réteg

Connect, PConnect, NConnect
Execute, CacheExecute
SelectLimit, CacheSelectLimit
MoveNext, Close
qstr, Affected_Rows, Insert_ID

A leggyorsabb mód, hogy hozzáférjenek a mezőadatokhoz, elérés által az közvetlenül tömb $recordset->fields. Ezenfelül beállíthatod a globális változókat $ADODB_FETCH_MODE = ADODB_FETCH_NUM, és (oci8, ibase/Firebird és odbc -nél) $ADODB_COUNTRECS = false, azelőtt csatlakoznál az adatbázisodhoz.

Fontold meg, hogy kötésparamétereket használj, ha az adatbázisod támogatja azt, ahogy ez javul, kérdezz tervújbóli felhasználást. Használjad arra ADOdb előadáshangolás-rendszerét, hogy gyorsan szűkületeket azonosítson. Írás idején (2003 decembere), ez oci8-at és odbc driver jelenti.

Végezetül győződj meg arról, hogy neked van e PHP gyorsítótárad telepítve, ami APC, Turck MMCache, Zend Accelerator vagy ionCube lehet.

Néhány példa:

Leggyorsabb adatvisszakeresés, ami a PHP-t használja

$rs =& $rs->Execute($sql);
while (!$rs->EOF) {
    var_dump($rs->fields);
 $rs->MoveNext();
}

Leggyorsabb adatvisszakeresés, ami ADOdb driver-t használ

$rs =& $rs->Execute($sql);
$array = adodb_getall($rs);
var_dump($array);

Haladó tippek

Ha neked van ADOdb C driver telepítve, le tudod cserélni az $rs->MoveNext() hívásaidat adodb_movenext($rs) -re. Ez megkettőzi ennek a műveletnek a sebességét. Ahoz, hogy azonnal egész recordset -eket nyerj vissza, használjad a GetArray() -t, ami használja a nagy gyorsaságú adodb_getall($rs) függvényt belsőleg.

Execute() az alapértelmezett kérdéseket futtassunk. Tudod használni az alacsony szintű függvényeket _Execute() és _query() csökkentik az erőforrás igényt. Ezek közül a függvények közül mindkettő ugyanazokat a paramétereket osztja meg mint az Execute().

Ha neked nincs semmilyen megkötött paramétereid vagy az adatbázis támogatás lehetővé teszi (emuláció nélkül), akkor közvetlenül tudod hívni _Execute() . Calling this function bypasses bind emulation. Hibaelhárítást támogatja az _Execute().

Ha nem igényelsz hibakezelést sem kötés emulációt, és nem követeli meg a recordset való visszatérést, akkor tudod hívni _query -t. Az ő erőssége nagy insert, update és delete. Funkciónak nevezni ezt emulált kötést kerül el, hibaelhárítás, és recordset*kezelés. Bármelyiket használjuk a visszatérési érték, igaz vagy hamis.

For Informix, you can disable scrollable cursors with $db->cursorType = 0.

Biztonságosan bővíteni és módosítani ADOdb-t

Lehet, hogy módosítani akarod ADOdb-t a saját céljaidért. Szerencsére még mindig fentartjuk az előző ADOdb osztályok kompatibilitását és használhatjuk az $ADODB_NEWCONNECTION változót. $ADODB_NEWCONNECTION megengedi neked, hogy felülbíráljad ADONewConnection() -t. ADOConnection() checks for this variable and will call the function-name stored in this variable if it is defined.

In the following example, new functionality for the connection object is placed in the hack_mysql and hack_postgres7 classes. The recordset class naming convention can be controlled using $rsPrefix. Here we set it to 'hack_rs_', which will make ADOdb use hack_rs_mysql and hack_rs_postgres7 as the recordset classes.

class hack_mysql extends adodb_mysql {
var $rsPrefix = 'hack_rs_';
  /* Your mods here */
}

class hack_rs_mysql extends ADORecordSet_mysql {
        /* Your mods here */
}

class hack_postgres7 extends adodb_postgres7 {
var $rsPrefix = 'hack_rs_';
  /* Your mods here */
}

class hack_rs_postgres7 extends ADORecordSet_postgres7 {
 /* Your mods here */
}

$ADODB_NEWCONNECTION = 'hack_factory';

function& hack_factory($driver)
{
  if ($driver !== 'mysql' && $driver !== 'postgres7') return false;
 
  $driver = 'hack_'.$driver;
        $obj = new $driver();
     return $obj;
}

include_once('adodb.inc.php');

 

Don't forget to call the constructor of the parent class in your constructor. If you want to use the default ADOdb drivers return false in the above hack_factory() function.

PHP5 jellemzők

ADOdb 4.02 vagy a későbbi eldönti, hogy PHP-nek melyik verzióját használod. Ha PHP5-öt észlel, a következő jellemzők elérhetővé válnak:

PDO: a PDO driver-ek elérhetőek. Lássad a kapcsolódásipéldákat. Jelenleg a PDO driver-ek nem olyan erőteljesek, mint őslakó driver-ek, és kezelésük kísérleti.

Foreach ciklus: Ez egy nagyon természetes útja, hogy feldolgozunk egy recordset -et:

$ADODB_FETCH_MODE = ADODB_FETCH_NUM;
     $rs = $db->Execute($sql);
      foreach($rs as $k => $row) {
           echo "r1=".$row[0]." r2=".$row[1]."<br>";
   }

 

Kivételek: Ésszeűen behúzzuk az adodb-exceptions.inc.php -et és hiba esetén tudsz kivételeket használni.

include("../adodb-exceptions.inc.php"); 
        include("../adodb.inc.php");     
 try { 
            $db = NewADOConnection("oci8"); 
          $db->Connect('','scott','bad-password'); 
      } catch (exception $e) { 
         var_dump($e); 
            adodb_backtrace($e->gettrace());
       }

Note that reaching EOF is not considered an error nor an exception.

 

Adatbázisok támogatása

A név lent az az érték, amit lehagysz NewADOConnection($name) hogy hozz létre egy kapcsolattárgyat azért az adatbázisért.
Név Tested Adatbázis RecordCount() használható e Előfeltételek Operációs rendszerek
hozzáférés B Microsoft Access/Jet. Neked létre kell hoznod egy ODBC DSN-t. Y/n ODBC Windows csak
hűhó B

Generic ADO, not tuned for specific databases. Allows DSN-less connections. Legjobb teljesítményért használj egy OLEDB ellátót. This is the base class for all ado drivers.

You can set $db->codePage before connecting.

? az adatbázistól függ ADO vagy OLEDB ellátó Windows csak
ado_access B Microsoft Access/Jet, ami használja ADO -t. Allows DSN nélküli kapcsolatok. Legjobb teljesítményért használj egy OLEDB ellátót. Y/n ADO vagy OLEDB ellátó Windows csak
ado_mssql B ADO-t használó Microsoft SQL Server. Allows DSN nélküli kapcsolatok. Legjobb teljesítményért használj egy OLEDB ellátót. Y/n ADO vagy OLEDB ellátó Windows csak
db2 C Használj PHP-t a jobb teljesítményért db2-specific kiterjesztés. Y/n DB2 CLI/ODBC interfész

Unix-és Windows. Requires IBM DB2 Universal Database ügyfél.

odbc_db2 C Csatlakozás DB2-höz általános ODBC kiterjesztést használ. Y/n DB2 CLI/ODBC interfész

Unix-és Windows. Unix telepítési útmutatás. I have had reports that the $host and $database params have to be reversed in Connect() when using the CLI interface.

vfp A Microsoft Visual FoxPro. Létre kell hoznod egy ODBC DSN-t. Y/n ODBC Windows csak
fbsql C FrontBase. Y ?

Unix és Windows

ibase B Interbase 6 vagy korábbi. Néhány felhasználó üzeni, hogy neked ezt kell használnod
$db->PConnect('localhost:c:/ibase/employee.gdb', "sysdba", "masterkey") a csatlakozáshoz. Lacks Affected_Rows jelenleg.

You can set $db->role, $db->dialect, $db->buffers and $db->charSet before connecting.
Y/n Interbase ügyfél Unix és Windows
Firebird C Interbase. Firebird verziója Y/n Interbase ügyfél Unix és Windows
borland_ibase C Interbase 6.5 Borland verziója vagy későbbi. Very sad that the forks differ. Y/n Interbase ügyfél Unix és Windows
informix C Általános informix driver. Használjad ezt, ha használod Informix 7.3-at vagy későbbit. Y/n Informix ügyfél Unix és Windows
informix72 C Olyan Informix ill Informix 7.3 előtti adatbázisok, amik nem támogatják a SELECT FIRST. Y/n Informix ügyfél Unix és Windows
ldap C LDAP driver. Lássd ezt a példát használat információért.   LDAP kiterjesztés ?
mssql A

Microsoft SQL Server 7 és későbbi. Szintén Microsoft SQL Server 2000-el működik. Vedd észre, hogy ez a dátumformating evvel a driver-el problémás. Például a PHP mssql kiterjesztés nem küldi vissza a másodperceket datetime-kor!

Y/n Mssql ügyfél

Unix-és Windows.
Unix telepítési útmutatás és egy másik.

mssqlpo A

Portable mssql driver. Identical to above mssql driver, except that '||', the concatenation operator, is converted to '+'. Useful for porting scripts from most other sql variants that use ||.

Y/n Mssql ügyfél

Unix és Windows.
Unix telepítési útmutatás

mysql A MySQL tranzakciótámogatás nélkül. Szintén be tudod állítani $db->clientFlags -t mielőtt csatlakozol. Y MySQL ügyfél Unix és Windows
mysqlt vagy maxsql A

MySQL with transaction support. We recommend using || as the concat operator for best portability. This can be done by running MySQL using:
mysqld --ansi or mysqld --sql-mode=PIPES_AS_CONCAT

Y/n MySQL ügyfél Unix és Windows
oci8 A Oracle 8/9. Has more functionality than oracle driver (Pl. Affected_Rows). You might have to putenv('ORACLE_HOME=...') before Connect/PConnect.

There are 2 ways of connecting - with server IP and service name:
PConnect('serverip:1521','scott','tiger','service')
or using an entry in TNSNAMES.ORA or ONAMES or HOSTNAMES:
PConnect(false, 'scott', 'tiger', $oraname).

Since 2.31, we support Oracle REF cursor variables directly (see ExecuteCursor).

Y/n Oracle ügyfél Unix és Windows
oci805 C Supports reduced Oracle functionality for Oracle 8.0.5. SelectLimit is not as efficient as in the oci8 or oci8po drivers. Y/n Oracle ügyfél Unix-és Windows
oci8po A Oracle 8/9 portable driver. This is nearly identical with the oci8 driver except (a) bind variables in Prepare() use the ? convention, instead of :bindvar, (b) field names use the more common PHP convention of lowercase names.

Use this driver if porting from other databases is important. Otherwise the oci8 driver offers better performance.

Y/n Oracle ügyfél Unix-és Windows
odbc A Általános ODBC, amit nem hangoltak speciális adatbázisokhoz. Csatlakozás használata
PConnect('DSN','user','pwd). Ez az alaposztály, amiből minden odbc driver származtatott.
? az adatbázistól függ ODBC Unix-és Windows. Unix-célzások.
odbc_mssql C Használj ODBC-t MSSQL csatlakozáshoz. Y/n ODBC Unix-és Windows.
odbc_oracle C Használj ODBC-t Oracle csatlakozáshoz. Y/n ODBC Unix-és Windows.
odbtp* C Általános odbtp driver. Odbtp egy arra alkalmas szoftver, hogy másik operációs rendszerekről fér hozzá Windows ODBC adatforrásokhoz. Y/n odbtp Unix-és Windows
odbtp_unicode C Odtbp Unicode támogatással Y/n odbtp Unix-és Windows
oracle C Megvalósítja régi Oracle 7 ügyfel API-t. Használj oci8 driver-t ha lehetséges jobb teljesítmányért. Y/n Oracle ügyfél Unix-és Windows
netezza C Netezza driver. Netezza az alap postgres kód-készletét használja. Y ? ?
pdo C Általános PDO driver PHP5-höz. Y PDO kiterjesztés és database specific drivers Unix-és Windows.
postgres A Általános PostgreSQL driver. Jelenleg azonos postgres7 driver -rel. Y PostgreSQL ügyfél Unix-és Windows.
postgres64 A PostgreSQL 6.4 és korábiak, melyik nem támogatják LIMIT -et belsőleg. Y PostgreSQL ügyfél Unix-és Windows.
postgres7 A PostgreSQL melyik támogatja LIMIT -et és egyébb 7 verzió funkcióit. Y PostgreSQL ügyfél Unix-és Windows.
postgres8 A PostgreSQL melyik támogat 8 verzió funkcióit. Y PostgreSQL ügyfél Unix-és Windows.
sapdb C SAP DB. Megbízhatóan működnie kellene ODBC driver alapján. Y/n SAP ODBC ügyfél

?

sqlanywhere C Sybase SQL Anywhere. Megbízhatóan működnie kellene ODBC driver alapján. Y/n SQL Anywhere ODBC ügyfél

?

sqlite B SQLite. Y -

Unix-és Windows.

sqlitepo B Portable SQLite driver. This is because assoc mode does not work like other drivers in sqlite. Namely, when selecting (joining) multiple tables, the table names are included in the assoc keys in the "sqlite" driver.

In "sqlitepo" driver, the table names are stripped from the returned column names. When this results in a conflict, the first field get preference.

Y -

Unix-és Windows.

sybase C Sybase. Y/n Sybase ügyfél

Unix-és Windows.

sybase_ase C Sybase ASE. Y/n Sybase ügyfél

Unix-és Windows.

 

A "Tested" oszlop jelzi, hogy a kódot milyen alaposan tesztelték és használták.
A = amit tesztel és használ sok ember
B = tesztelt és használható, de lehet, hogy néhány jellemzőt nem valósítanak meg
C = felhasználó adott vagy kísérleti driver. Lehet, hogy teljesen nem támogatja ADOdb legújabb jellemzői közül mindegyiket.

Az "RecordCount() használható e" oszlop jelzi, hogy RecordCount() küldi vissza a sorok számát, vagy visszaad 1-et mikor egy SELECT utasítást végrehajtunk. Ha ebben az oszlopban ez látható y/n akkor a RecordCount() emulálják mikor a globális változó $ADODB_COUNTRECS=true (ez az alapértelmezés). Note that for large recordsets, it might be better to disable RecordCount() emulation because substantial amounts of memory are required to cache the recordset for counting. Valamint van egy 40-50 százalékos sebességcsökkenés, ha emulációt használunk. Ezt PostgreSQ-Lt és MySQL-t kivéve emulálják a legtöbb adatbázisban. Ezt a változót ellenőrzi minden alkalommal mikor kérdést végrehajtanak, úgyhogy szelektíven tudsz választani melyik recordsets -t végösszeg.

Folytatás hamarosan következik...