Loading:


Zorientowana obiektowo współpraca PHP z MySQL

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.



Napisz Artyku³

Listing

<?php
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;
        }
  }
?>




Dodano przez: divix
Ranga: Administrator serwisu Punktów: 38523
Komentarze użytkowników
    • Tre¶æ komentarza
      Kod do komentarza (opcjonalnie)
      PHP JavaScript MySQL Smarty SQL HTML CSS ActionScript
      Autor
      Token
      token

       

       








funkcje.net
Wszelkie prawa zastrzeżone©. | Funkcje.net 2008-2024 v.1.5 | design: diviXdesign & rainbowcolors