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: 0
    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-2025 v.1.5 | design: diviXdesign & rainbowcolors