Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Klasa do obsługi bazy danych...poprawcie
Joachim Peters
post
Post #1





Grupa: Zarejestrowani
Postów: 196
Pomógł: 2
Dołączył: 1.03.2006

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


Od niedawna dopiero zaczełem interesować się php5 i dzisiaj napisałem sobie taką klase do obsługi bazy danych:

  1. <?php
  2. class DB 
  3. {
  4.  private $dbc;
  5.  public $sql_queries = 0;
  6.  
  7.  public function __construct($db_user, $db_name, $db_pass, $db_host)
  8.  {
  9.  $this->dbc = @mysql_connect($db_host, $db_user, $db_pass) OR die ('Nie mogłem połączyć się z MySQL-em: ' . mysql_error() );
  10.  @mysql_select_db($db_name) OR die ('Nie udało mi się wybrać bazy danych: ' . mysql_error() );
  11.  }
  12.  
  13.  public function query($sql) 
  14.  {
  15.  $this->sql_queries++; 
  16.  return @mysql_query($sql);
  17.  }
  18.  
  19.  public function fetch($result) 
  20.  {
  21.  return mysql_fetch_array($result);
  22.  }
  23.  
  24.  public function show_query() 
  25.  {
  26.  print "<br />Zapytań SQL: <b>{$this->sql_queries}</b>";
  27.  }
  28.  
  29. }
  30. ?>


i przykład:

  1. <?php
  2. $db = new DB('root', 'user', 'pass', 'localhost');
  3.  
  4. $sql = "SELECT * FROM table";
  5. $result = $db->query($sql);
  6.  
  7. while($row = $db->fetch($result)) 
  8. {
  9. echo $row['cos'];
  10. }
  11.  
  12. $db->show_query();
  13. ?>


tak jak pisałem wyżej, dopiero zaczynam z php5 więć moge robić błędy...proszę o pisanie co jest w tej klasie żle napisane i uwagi co moge dodać.

Pozdrawiam
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Joachim Peters
post
Post #2





Grupa: Zarejestrowani
Postów: 196
Pomógł: 2
Dołączył: 1.03.2006

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


Zrobiłem coś na podstawie tego co @Ludvik napisał mi w innym temacie o bazie danych.

  1. <?php
  2.  
  3.  
  4. class DB 
  5. {
  6.  public $sql_queries = 0;
  7.  
  8.  public function __construct($db_user, $db_name, $db_pass, $db_host)
  9.  {
  10.  $this->handle = mysql_connect($db_host, $db_user, $db_pass);
  11.  if (!$this->handle) {
  12.  throw new Exception();
  13.  }
  14.  mysql_select_db($db_name, $this->handle);
  15.  }
  16.  
  17.  public function query($sql) 
  18.  {
  19.  $this->sql_queries++; 
  20.  return @mysql_query($sql);
  21.  }
  22.  
  23.  public function fetch($result) 
  24.  {
  25.  return mysql_fetch_array($result);
  26.  }
  27.  
  28.  public function show_query() 
  29.  {
  30.  print "<br />Zapytań SQL: <b>{$this->sql_queries}</b>";
  31.  }
  32.  
  33.  public function close()
  34.  {
  35.  return mysql_close();
  36.  }
  37.  
  38. protected $handle;
  39.  
  40. }
  41.  
  42. try {
  43. $db = new DB('root', '', '', 'localhost');
  44. } catch(Exception $e) {
  45. die ('Nie można nawiązać połączenia z bazą danych.');
  46. }
  47.  
  48. $sql = "SELECT * FROM ttt";
  49. $result = $db->query($sql);
  50.  
  51. while($row = $db->fetch($result)) 
  52. {
  53. echo $row['cos'];
  54. }
  55.  
  56. $db->show_query();
  57.  
  58.  
  59. ?>


ale teraz gdy nie ma połączenia z bazą (złe dane) to nic się nie dzieje oprócz wywalenia błędu odnośnie fetch'a.

probowałem też coś takiego

  1. <?php
  2.  
  3.  
  4. class DB 
  5. {
  6.  private $dbc;
  7.  public $sql_queries = 0;
  8.  
  9.  public function __construct($db_user, $db_name, $db_pass, $db_host)
  10.  {
  11.  $this->dbc = mysql_connect($db_host, $db_user, $db_pass);
  12.  mysql_select_db($db_name);
  13.  }
  14.  
  15.  public function query($sql) 
  16.  {
  17.  $this->sql_queries++; 
  18.  return @mysql_query($sql);
  19.  }
  20.  
  21.  public function fetch($result) 
  22.  {
  23.  return mysql_fetch_array($result);
  24.  }
  25.  
  26.  public function show_query() 
  27.  {
  28.  print "<br />Zapytań SQL: <b>{$this->sql_queries}</b>";
  29.  }
  30.  
  31.  public function close()
  32.  {
  33.  return mysql_close();
  34.  }
  35.  
  36. }
  37.  
  38. class DBException extends Exception {};
  39.  
  40. try {
  41. $db = new DB('root', '', '', 'localhost');
  42. } catch(DBException $e) {
  43. die ('Nie można nawiązać połączenia z bazą danych.');
  44. }
  45.  
  46. $sql = "SELECT * FROM tabbe";
  47. $result = $db->query($sql);
  48.  
  49. while($row = $db->fetch($result)) 
  50. {
  51. echo $row['title'];
  52. }
  53.  
  54. $db->show_query();
  55.  
  56.  
  57. ?>


ale jest tak samo..proszę o pomoc

Ten post edytował d@ro 10.08.2006, 16:22:26
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: 22.10.2025 - 18:42