Robię klasy do obsługi baz danych, wszystkie są jednorodne... Oto np. MySQL:
<?
class DB { // Definicja klasy DB
var $DB_HOST; // Host bazy danych MySQL
var $DB_NAME; // Nazwa bazy danych MySQL
var $DB_USER; // Nazwa użytkownika bazy danych MySQL
var $DB_PASS; // Hasło użytkownika bazy danych MySQL
var $DB_QUERY; // Treść zapytania MySQL
var $DB_NUMROWS; // Ilość wierszy dla zapytania MySQL
var $DB_FETCH_ARRAY; // Rezultat zapytania w postaci tablicy
var $DB_ESCAPE_STRING; // Przetworzone zapytanie
var $DB_RESULT; // Rezultat zapytania
var $DB_FETCH_ARRAY_FULL = array(); // Rezultat zapytania w postaci tablicy wielowymiarowej var $DB_FETCH_OBJECT; // Rezultat zapytania w postaci objektu
function DB($DB_HOST,
$DB_NAME,
$DB_USER,
$DB_PASS) { // Konstruktor
$this->DB_HOST = $DB_HOST; // Zmienna zewnętrzna
$this->DB_NAME = $DB_NAME; // Zmienna zewnętrzna
$this->DB_USER = $DB_USER; // Zmienna zewnętrzna
$this->DB_PASS = $DB_PASS; // Zmienna zewnętrzna
$DB_USER,
$DB_PASS) // Połączenie z bazą danych MySQL
OR
die(\"Nie można się połączyć z bazą danych MySQL: \" OR
die(\"Nie można wybrać bazy danych MySQL: \" }
function query($DB_QUERY) { // Wykonanie zapytania
$this->DB_QUERY = $DB_QUERY; // Zmienna zewnętrzna
$this->DB_RESULT = @mysql_query($DB_QUERY) // Wykonanie zapytania OR
die(\"Nie można wykonać zapytania: <!--\" . $DB_QUERY . \"-->\"
return $this->DB_RESULT;
}
function escape_string($DB_ESCAPE_STRING) { // Lewe ukośniki
$this->DB_ESCAPE_STRING = $DB_ESCAPE_STRING; // Zmienna zewnętrzna
return $this->DB_ESCAPE_STRING; // Zwrócenie wartośći
}
function close() { // Zamknięcie połączenia
@mysql_close() // Zamknięcie połączenia z bazą danych MySQL OR
die(\"Nie można zamknąć połączenia z bazą danych MySQL: \" }
function fetch_array($DB_RESULT) { // Pobranie wyników do tablicy
OR
die(\"Nie można przetworzyć zapytania: <!--\" . $this->DB_QUERY . \"-->\"
return $this->DB_FETCH_ARRAY; // Zwrócenie wartośći
}
function fetch_array_full($DB_RESULT) { // Pobranie wyników do tablicy wielowymiarowej
while ($this->DB_FETCH_ARRAY_FULL[]
=
) {}
return $this->DB_FETCH_ARRAY_FULL; // Zwrócenie wartośći
}
function free_result($DB_RESULT) { // Wyczszczenie pamięci
OR
die(\"Nie można oczyścić pamięci: <!--\" . $this->DB_QUERY . \"-->\"
}
function fetch_object($DB_RESULT) { // Pobranie wyników w postaci objektu
OR
die(\"Nie można przetworzyć zapytania: <!--\" . $this->DB_QUERY . \"-->\"
return $this->DB_FETCH_OBJECT; // Zwrócenie wartości
}
function numrows($DB_RESULT) { // Iloć wierszy
$this->DB_NUMROWS = @mysql_num_rows($DB_RESULT) // Pobranie iloci wierszy OR
die(\"Nie można pobrać liczby wierszy: <!--\" . $this->DB_QUERY . \"-->\"
return $this->DB_NUMROWS; // Zwróć wartoć
}
}
?>
I aktualnie robię klasę do obsługi Interbase/Firebird. I moja praca stanęła przy ostatniej funkcji, a mianowicie numrows():
<?
class DB { // Definicja klasy DB
var $DB_CONN; // Uchwyt Interbase/Firebird
var $DB_HOST; // Host bazy danych Interbase/Firebird
var $DB_NAME; // Nazwa bazy danych Interbase/Firebird
var $DB_CSTR; // String łączący
var $DB_USER; // Nazwa użytkownika bazy danych Interbase/Firebird
var $DB_PASS; // Hasło użytkownika bazy danych Interbase/Firebird
var $DB_QUERY; // Treść zapytania Interbase/Firebird
var $DB_NUMROWS; // Ilość wierszy dla zapytania Interbase/Firebird
var $DB_FETCH_ARRAY; // Rezultat zapytania w postaci tablicy
var $DB_ESCAPE_STRING; // Przetworzone zapytanie
var $DB_RESULT; // Rezultat zapytania
var $DB_FETCH_ARRAY_FULL = array(); // Rezultat zapytania w postaci tablicy wielowymiarowej var $DB_FETCH_OBJECT; // Rezultat zapytania w postaci objektu
function DB($DB_HOST,
$DB_NAME,
$DB_USER,
$DB_PASS) { // Konstruktor
$this->DB_HOST = $DB_HOST; // Zmienna zewnętrzna
$this->DB_NAME = $DB_NAME; // Zmienna zewnętrzna
$this->DB_USER = $DB_USER; // Zmienna zewnętrzna
$this->DB_PASS = $DB_PASS; // Zmienna zewnętrzna
$this->DB_CSTR = $DB_HOST . \":\" . $DB_NAME . \".gdb\"; // Tworzenie stringa łączącego
$this->DB_CONN = @ibase_connect($this->DB_CSTR,
$DB_USER,
$DB_PASS) // Połączenie z bazą danych
OR
die(\"Nie można się połączyć z bazą danych Interbase/Firebird: \" . ibase_errmsg()); // Obsługa błędów
return $this->DB_CONN; // Zwrócenie wartośći
}
function query($DB_QUERY) { // Wykonanie zapytania
$this->DB_QUERY = $DB_QUERY; // Zmienna zewnętrzna
$this->DB_RESULT = @ibase_query($this->DB_CONN,
$DB_QUERY) // Wykonanie zapytania
OR
die(\"Nie można wykonać zapytania: <!--\" . $DB_QUERY . \"-->\"
. ibase_errmsg()); // Obsługa błędów
return $this->DB_RESULT; // Zwrócenie wartośći
}
function escape_string($DB_ESCAPE_STRING) { // Lewe ukośniki
$this->DB_ESCAPE_STRING = $DB_ESCAPE_STRING; // Zmienna zewnętrzna
return $this->DB_ESCAPE_STRING; // Zwrócenie wartośći
}
function close() { // Zamknięcie połączenia
@ibase_close($this->DB_CONN) // Zamknięcie połączenia z bazą Interbase/Firebird
OR
die(\"Nie można zamknąć połączenia z bazą danych Interbase/Firefox: \" . ibase_errmsg()); // Obsługa błędów
}
function fetch_array($DB_RESULT) { // Pobranie wyników do tablicy
$this->DB_FETCH_ARRAY = @ibase_fetch_assoc($DB_RESULT) // Wykonanie tablicy
OR
die(\"Nie można przetworzyć zapytania: <!--\" . $this->DB_QUERY . \"-->\"
. ibase_errmsg()); // Obsługa błędów
return $this->DB_FETCH_ARRAY; // Zwrócenie wartośći
}
function fetch_array_full($DB_RESULT) { // Pobranie wyników do tablicy wielowymiarowej
while ($this->DB_FETCH_ARRAY_FULL[]
=
@ibase_fetch_assoc($DB_RESULT) // Wykonanie tablicy wielowymiarowej
) {}
return $this->DB_FETCH_ARRAY_FULL; // Zwrócenie wartośći
}
function free_result($DB_RESULT) { // Wyczyszczenie pamięci
@ibase_free_result($DB_RESULT) // Wyczyszczenie pamięci (buforu)
OR
die(\"Nie można oczyścić pamięci: <!--\" . $this->DB_QUERY . \"-->\"
. ibase_errmsg()); // Obsługa błędów
}
function fetch_object($DB_RESULT) { // Pobranie wyników w postaci obiektu
$this->DB_FETCH_OBJECT = @ibase_fetch_object($DB_RESULT) // Pobranie wyników
OR
die(\"Nie można przetworzyć zapytania: <!--\" . $this->DB_QUERY . \"-->\"
. ibase_errmsg()); // Obsługa błędów
return $this->DB_FETCH_OBJECT; // Zwrócenie wartości
}
/* function numrows($DB_RESULT) { // Ilość wierszy
$this->DB_NUMROWS = @...................
OR
die(\"Nie można pobrać ilości wierszy: <!--\"
. $this->DB_QUERY . \"-->\"
. ibase_errmsg()); // Obsługa błędów
return $this->DB_NUMROWS; // Zwrócenie wartośći
}
*/
}
?>
Mam schemat w postaci komentarza, czyli jak powinna wygądać ta funkcja, niestety jak wiem nie istnieje taka funkcja Ibase które by zwróciła ilość wierszy... Wie może ktoś jakby miała wyglądać funkcja numrows() w mojej klasie?? Stosując się do mojego sposobu zapisu funkcji??
Pozdro
alfanick
PS: To jest dość ważne dla mnie