Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem ze sterownikiem mysql.
Forum PHP.pl > Forum > PHP
Helid
Ucząc się klas w php na podstawie arta z webcity.pl
Napisałem coś takiego:
  1. <?php
  2. //Dane do połączenia
  3. $db_host = 'sql.boo.pl';
  4. $db_user = 'helid';
  5. $db_pass = '****';
  6. $db_name = '****';
  7.  
  8.  class sql{
  9. private $link;
  10. private $result;
  11. public $rows;
  12.  public function __construct(){ // 1
  13.  echo 'Wywołanie konstruktora<br/>';
  14.  $this->link = mysql_connect("$db_host", "$db_user", "$db_pass");
  15. mysql_select_db("$db_name", $this->link);
  16. } // koniec __construct();
  17.  public function __destruct(){ // 2
  18.  echo 'Wywołanie destruktora<br/>';
  19.  if($this->link) {
  20. mysql_close($this->link);
  21. }
  22. } // koniec __destruct();
  23.  public function query($query){
  24.  $this->result = mysql_query($query, $this->link);
  25.  } // koniec query();
  26.  public function fetch_row(){
  27.  if($this->rows = mysql_fetch_row($this->result)){
  28. return 1;
  29.  }
  30. } // koniec fetch_row();
  31.  }
  32. $sql = new sql; 
  33. echo 'Zawartość bazy "test":<ul>';
  34. $sql->query('SELECT * FROM users WHERE login = "helid" ');
  35.  while($wiersz = mysql_fetch_array($sql->query)){
  36. echo "<li>".$wiersz['id']."</li>";
  37.  }
  38.  echo '</ul>';
  39. ?>

Adres:http://www.phpbb3.boo.pl/sql.php
Samie zobaczcie treśc błędu.
Bo dużo już tu namieszałem sciana.gif
splatch
[ot]A nie zapomniałeś o globalexclamation.gif? ;P[/ot]
Helid
Możesz jaśniej?
-=Peter=-
Z tego co widze, to powinieneś się najpierw podstaw nauczyć...

Powiedz mi co to za atrybut:
  1. <?php
  2. $sql->query
  3. ?>


Raczej nie masz go w definicji klasy, metoda query powinna zwracać zasób, czyli ta metoda powinna wyglądać przykładowo tak:

  1. <?php
  2. public function query($query){
  3.  $this->result = mysql_query($query, $this->link);
  4.  return $this->result;
  5. }
  6. ?>


a wykorzystanie:

  1. <?php
  2. $blebleble = $sql->query('SELECT * FROM users WHERE login = "helid" ');
  3.  while($wiersz = mysql_fetch_array($blebleble)){
  4. echo "<li>".$wiersz['id']."</li>";
  5.  }
  6. ?>
splatch
Metoda query nie zwraca wskaźnika na result, zatem po przypisaniu do jakiejkolwiek zmiennej będzie to null.
  1. <?php
  2. $sql->query('...');
  3. while ($sql->fetch_row()) {
  4. echo $sql->rows['id'];
  5. }
  6. ?>
Helid
Eh, coś jeszce nie tak dry.gif
Zrobiłem tak jak kazaliście.
A propo podstawy umiem, tutaj są klasy w które jak mówiłem wchodze i mam problemy.
http://www.phpbb3.boo.pl/sql.php
  1. <?php
  2. //Dane do połączenia
  3. $db_host = 'sql.boo.pl';
  4. $db_user = 'helid';
  5. $db_pass = 'jakub';
  6. $db_name = 'phpbb3';
  7.  
  8.  class sql{
  9. private $link;
  10. private $result;
  11. public $rows;
  12.  public function __construct(){ // 1
  13.  echo 'Wywołanie konstruktora<br/>';
  14.  $this->link = mysql_connect("$db_host", "$db_user", "$db_pass");
  15. mysql_select_db("$db_name", $this->link);
  16. } // koniec __construct();
  17.  public function __destruct(){ // 2
  18.  echo 'Wywołanie destruktora<br/>';
  19.  if($this->link) {
  20. mysql_close($this->link);
  21. }
  22. } // koniec __destruct();
  23.  public function query($query){
  24.  $this->result = mysql_query($query, $this->link);
  25.  return $this->result;
  26. } // koniec query();
  27.  public function fetch_row(){
  28.  if($this->rows = mysql_fetch_row($this->result)){
  29. return 1;
  30.  }
  31. } // koniec fetch_row();
  32.  }
  33. $sql = new sql; 
  34. echo 'Zawartość bazy "user":<ul>';
  35. $sql->query('SELECT * FROM users WHERE login = "helid"');
  36. while ($sql->fetch_row()) {
  37. echo $sql->rows['id'];
  38. }
  39.  
  40.  echo '</ul>';
  41. ?>
mandragorek
Sugerowałbym zmianę hasła do bazy danych. winksmiley.jpg
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.