Loading:

Promocja Helion.pl

obiektowo operujemy na bazie danych

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

<?php
/*
* 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... Smile



Napisz Artykuł

Listing

niema


Ten wpis posiada swój wątek na forum

Wszystkie pytania prosimy kierować właśnie tam ponieważ komentarze to miejsce na poprawki do kodu lub alternatywne rozwiązania i pytania nie będą publikowane

http://forum.funkcje.net/forum/viewtopic.php?f=4&t=12308

Dane do logowania na forum są takie same jak na funkcje.net



Dodano przez: bidziu8900 Ranga: Poziom 9 Punktów: 351
Komentarze użytkowników
Mam pytanie. W funkcji sqlService zadeklarowałeś kilka "globali". Jakie one mają zastosowanie skoro nigdzie indziej się do nich nie odwołujesz? Pozdrawiam
autor: Adam K | 12313 | 2011-02-27 12:31:16


Nie jestem autorem tego artykułu, ale wygląda mi na to, że na początku deklaruje on tutaj zmienne, a potem inicjuje je w konstruktorze, dzięki temu możliwe będzie odwołanie się do tych zmiennych bezpośrednio spoza klasy.
autor: divix | 12318 | 2011-03-01 19:33:11


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