Adodb használata, tutorial

Címkék: web, adodb, adatbázis, php
Létrehozva: 2007. június 25. 11:35
Bemutatok néhány egyszerű példát a használatához azoknak akik még csak most ismerkednek vele.
Szükséges hozzá PHP alapjaival tisztában lenni.

1. Kapcsolódás adatbázishoz DSN (adatforrás) segítségével

<?php


// Kiszolgáló
$db_host = 'localhost';

// Kiszolgálónk tipusa pl: mysql, postgres, oracle
$db_type = 'mysql'; 

// Adatbázisunk neve
$db_name = 'test'; 

// Felhasználói név
$db_user = 'root';

// Jelszó
$db_pass = '';

// Adodb bővítmények
$db_ext = 'pear:cache:extend';

// Összeálítjuk a DSN-t
$dsn = $db_type . '://' . $db_user . ':' . $db_pass 
   . '@' . $db_host . '/' . $db_name . '#' . $db_ext;

// Létrehozzuk a kapcsolatot 
$db = ADONewConnection( $dsn );

// Ellenőrizük
if ( ! $db->_connectionID ) {
  die( 'Sikertelen kapcsolódás az adatbázishoz.' );
}

// Ha szükséges akkor hibakereső módba is használhatjuk ami megkönnyíti 
// a fejlesztést, ekkor kiír nekünk minden lefuttatott kérést és hibát.
// $db-  >debug = true;
 ?>

Az előbbi sorokat lementhetjük a projektmappánkon belül a connect.php állományba.
Ugyanide csomagoljuk ki letöltött  adodbXXX.zip-et  is.

 

2. Gyakorlati példa

A következő táblával fogunk dolgozni ami egy egyszerű üzenőfalt valósít meg:

CREATE  TABLE  forum (
    Id INT( 11  )  UNSIGNED NOT  NULL  AUTO_INCREMENT  PRIMARY  KEY ,
    Name VARCHAR( 100  )  NULL ,
    Email VARCHAR( 100  )  NULL ,
    Message TEXT NULL ,
    CreationDate TIMESTAMP NOT  NULL  DEFAULT CURRENT_TIMESTAMP
)
Lássunk egy-két példát (index.php)

<?php

// behúzzuk a szükséges állományokat 
// egy példa kedvéért
include 'smarty/Smarty.class.php';
// kicsomagolt adodb
include 'adodb/adodb.inc.php'; 
// az előzőekben elkészített kapcsolat konfigurációnk
include 'connect.php';  

// Beillesztés a "forum" táblánkba 
$sql = "INSERT INTO forum ( Name, Email, Message ) 
      VALUES ( 'Sod', 'noreplay@noreplay.hu', 'Az én üzenetem.' )";
 
// futtatjuk utasításunkat
$db->Execute( $sql );

// Klasszikus lekérdezés
$rs = $db->Execute( 'SELECT Name, Message FROM forum ORDER BY Id DESC' );

// A sorok számával ellenőrizünk
if( $rs->_numOfRows ) {
    // egy ciklussal felsoroljuk az eredményt
    while ( $record = $rs->FetchRow() ) {
        print $record['Name'] . '<br />' . $record['Message'] . '<hr />';
    }
}

// Egyből egy többdimenziós tömb ami smarty-val nagyon jól feldolgozhat
$rs = $db->Execute( 'SELECT Name,  Message FROM forum ORDER BY Id DESC' );
if( $rs->_numOfRows ) {
    $messages = $rs->GetArray();
    // A foreach ciklust már a template-ben valósítjuk meg. 
    $smarty->assign( 'messages', $messages );
}

// Csak egy sorra vagyunk kíváncsiak
$row = $db->GetRow( 'SELECT Name,  Message FROM forum WHERE Id = 1' );

// Ha csak egy konkrét mező értéke érdekel minket 
$message = $db->GetOne( 'SELECT Message FROM forum WHERE Id = 1' );


?>
Felhívnám a figyelmet, hogy ezt a példa gyakorlatilag még nem egy működőképes üzenőfal.
De remélem sokat segítettem az ismerkedésben, sok sikert hozzá.
Ha esetleg kérdésed lenne, nyugodtan keress meg elérhetőségeimen.