Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> obsługa bazy danych, klasy
bliitz
post
Post #1





Grupa: Zarejestrowani
Postów: 155
Pomógł: 12
Dołączył: 5.04.2008

Ostrzeżenie: (0%)
-----


Witam

tworze sobie klasy do obsługi bazy i walidacji danych.

plik z klasa bazy
dbFns.php

Kod
<?php

     require_once('config.php');
    
     class Database {
        
         protected $hConn;
        
         public function __construct() {
            
             $this->hConn = mysql_connect(Db_host, Db_user, Db_password, Db_database)
             if(!$this->hConn) {
                 throw new Exception("Nie można połączyć się z bazą.");
             }
         }
        
         public function __destruct() {
            
             if($this->hConn) {
                 print ('widze w destruktorze');
                 mysql_close($this->hConn);
             }
         }
        
         public function select($sql) {
            
             $sql = mysql_real_escape_string($sql);
             $hRes = mysql_query($sql, $this->hConn) or die('brak polaczenia w dbfns');
             while($odp = mysql_fetch_array($hRes)) {
             print $odp['email'];
             }
         }
     }

?>


plik z funkcjami do walidacji danych:

Kod
<?php
     require 'dbFns.php';
    
     class ValidateData extends Database {
    
      function safe_output($string) {
        
         $string = trim($string);
         $string = strip_tags($string);
         $string = htmlspecialchars($string);
        
         return $string;
     }
    
     function validateUserName($value) {
         $value = $this->safe_output($value);
         if($value == null) {
             return 0;
         }
         $query = parent::select("SELECT * FROM users WHERE username = '$value'");
     }            
}    
?>


i wywołanie funkcji w pliku sign.php w postaci:
Kod
   <?php
      if(isset($_POST['signup'])) {
      $validate = new ValidateData();
      $validate->validateUserName($_POST['login_sign']);
     }
?>


Problem polega na tym że połączenie z bazą jest zamykane przed wywołaniem funckji validateUserName(), tzn. pojawia się komunikat z
Kod
$hRes = mysql_query($sql, $this->hConn) or die('brak polaczenia w dbfns');
tej linijki kodu że brak połączenia w dbnfs, oraz komunikat
Kod
print('widze w destruktorze');
czyli wywoływany jest od razu destruktor według mnie.

Czy ktoś może pomóc rozwiązać ten problem bo nie wiem czy funkcja select jest w złym miejscu czy uchwyt połączenia trzeba jakoś inaczej przekazać??

Ten post edytował bliitz 5.04.2008, 13:04:21
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.12.2025 - 22:06