Jak wiadomo, obiektowe operacje na bazach danych są dużo bardziej bezpieczne niż umieszczanie w kodzie bezpośrednio odwołań i zapytań SQL (narażamy wtedy skrypt na SQL injectiony)... Tak więc bawimy sie w stworzenie klasy obsługi SQLA...
Plik klasa.php
Listing
/*
* Obsługa bazy danych MySQL
* by bidziu
*/
class sqlService
{
var $query;
var $result;
var $records_rows;
var $records;
var $dbHost;
var $dbUser;
var $dbHaslo;
var $dbName;
var $connection;
/*
* konstruktor
*/
function sqlService()
{
global $cfg_host_db, $cfg_login_db, $cfg_haslo_db, $cfg_baza_db;
$this -> query = '';
$this -> result = '';
$this -> records_rows = '';
$this -> records = array();
$this -> dbHost = 'localhost'; // nazwa hosta
$this -> dbUser = 'login'; // login do bazy
$this -> dbHaslo = 'haslo'; // hasło do bazy
$this -> dbName = 'baza'; // nazwa bazy danych
$this -> connection = FALSE;
}
/*
* obsługa błędów
*/
function sqlError()
{
echo '<br><b>Błąd MySQL #'.mysql_errno().'</b>: '.mysql_error() .'<br>';
}
/*
* koniec obsługi błędów: sqlError();
*/
/*
* łączenie z bazą danych
*/
function sqlConnect()
{
$this -> connection = (@mysql_connect($this -> dbHost, $this -> dbUser,
$this -> dbHaslo) == TRUE);
if (($this -> connection == TRUE) && ($this -> dbName != ''))
{
if ($this -> dbName = @mysql_select_db($this -> dbName) == TRUE)
{
return TRUE;
}
else
{
$this -> sqlError();
mysql_close();
return FALSE;
}
}
else
{
$this -> sqlError();
return FALSE;
}
}
/*
* koniec łączenia z bazą: sqlConnect()
*/
/*
* zamknięcie połączenia i kasowanie zmiennych
*/
function sqlClose()
{
if (isset($this -> connection))
{
if ($this -> result)
{
mysql_free_result($this -> result);
};
mysql_close();
unset(
$this -> query,
$this -> result,
$this -> records_rows,
$this -> records,
$this -> dbHost,
$this -> dbUser,
$this -> dbHaslo,
$this -> dbName,
$this -> connection
);
return TRUE;
}
else
{
$this -> sqlError();
return FALSE;
};
}
/*
* koniec zamknięcia połączenia i kasowania zmiennych: sqlClose()
*/
/*
* obsługa zapytań do bazy
*/
function sqlQuery($query)
{
$this -> query = $query;
if (($this -> result = @mysql_query($this -> query)) == TRUE)
{
return $this -> result;
}
else
{
$this -> sqlError();
return FALSE;
}
}
/*
* koniec obsługi zapytań: sqlQuery()
*/
/*
* obsługa zapytań - zwracanie wyniku: sqlResult()
*/
function sqlResult()
{
if (($this -> connection == TRUE) && ($this -> result != NULL))
{
$this -> records = mysql_fetch_array($this -> result);
return $this -> records;
}
else
{
$this -> sqlError();
return FALSE;
}
}
/*
* koniec obsługi zapytań - zwracanie wyniku: sqlResult()
*/
/*
* obsługa zapytań - zwracanie liczby pól: sqlRows()
*/
function sqlRows()
{
if ($this -> records_rows = mysql_num_rows($this -> result))
{
return $this -> records_rows;
}
else
{
$this -> sqlError();
return FALSE;
}
}
/*
* koniec obsługi zapytań - zwracanie liczby pól: sqlRows()
*/
};
/*
* koniec klasy obsługi bazy danych: sqlService
*/
?>
Teraz przykład do wywołania tejże klasy :
Listing <?php
$foo = new sqlService;
$foo -> sqlConnect();
$foo -> sqlQuery("SELECT * FROM tabela");
echo '<br>Pól w tabeli Tabela: '.$zmienna -> sqlRows() .'<br>';
while ($row = $foo -> sqlResult())
{
echo $row['pole1'] . ' ' . $row['pole2'] . '<br>';
};
$foo -> sqlClose();
?>
Ot tyle na dziś. Mam nadzieję, że jest to proste i zrozumiałe...
Listing