Loading:


    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




    Dodano przez: bidziu8900 Ranga: 0 Punktów: 0
    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-2025 v.1.5 | design: diviXdesign & rainbowcolors