Skrypt łączy się z bazą danych, wyświetla własne błędy oraz wyświetla rezultaty.
Poniższy skrypt powinien znajdować się w osobny pliku .php (przyjmijmy nazwę dla pliku bazadanych.php).
Aby dołączyć plik źródłowy do swojego pliku wystarczy linijka kodu: (pamiętając żeby plik był w tej samej lokalizacji co twój plik)
require_once('database.php');
Aby być w stanie skorzystać ze skryptu musisz utworzyć nowy obiekt o nazwie np $db
$db = new Database($nazwa_host, $nazwa_użytkownika, $hasło, '$nazwa_bazy_danych');
Konstruktor przyjmuje 4 wymagane parametry: nazwę hosta, nazwę użytkownika oraz jego hasło jak i nazwę wykorzystywanej bazy danych. Gdy obiekt jest utworzony możemy wtedy używać jego własności, czyli wbudowanych w nim funkcji dla własnych celów np:
$rezultat = $db->query($sql);
$db->$rezultat->num_rows;
Jak można łatwo zobrazować, aby odnieść się do jakiejś wbudowanej w obiekt funkcji potrzeba zapisać znak przypisania między nazwą obiektu a nazwą funkcji (->) operator strzałki, tym właśnie się zajmuje.
Kompatybilność: PHP5 oraz MySQL5.
Listing
class Database {
protected $host;
protected $user;
protected $pwd;
protected $dbName;
protected $dbLink;
protected $result;
protected $resultObj;
function __construct($host, $user, $pwd, $dbName){
$this->host = $host;
$this->user = $user;
$this->pwd = $pwd;
$this->dbName = $dbName;
$this->connect();
}
// Połącz się z serwerem mySQL i wybierz bazę danych
public function connect() {
try {
$this->dbLink = @mysqli_connect($this->host, $this->user, $this->pwd, $this->dbName);
if (!$this->dbLink) {
throw new Exception ("Nie można było połączyć użytkownika $this->user z bazą $this->dbName");
}
}
catch (Exception $e) {
echo $e->getMessage();
exit();
}
return $this->dbLink;
}
// Wykonaj zapytanie SQL
public function query($query) {
try {
$this->result = mysqli_query($this->dbLink, $query);
if (!$this->result) {
throw new Exception ('Błąd MySQL: ' . mysqli_error($this->dbLink));
}
}
catch (Exception $e) {
echo $e->getMessage();
exit();
}
// zapisz wynik do nowego obiektu, który będzie imitować interfejs mysqli OO
$this->resultObj = new MyResult($this->result);
return $this->resultObj;
}
// zamknij połączenie MySQL
public function close(){
mysqli_close($this->dbLink);
}
}
class MyResult {
protected $theResult;
public $num_rows;
function __construct($r) {
if (is_bool($r)) {
$this->num_rows = 0;
}
else {
$this->theResult = $r;
// pobierz całkowitą liczbę znalezionych rekordów
$this->num_rows = mysqli_num_rows($r);
}
}
// pobierz asocjacyjną tablicę wyników (przetwarza naraz jeden wiersz)
function fetch_assoc() {
$newRow = mysqli_fetch_assoc($this->theResult);
return $newRow;
}
}
?>
Ranga: Administrator serwisu Punktów: 0