Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Klasa obsługująca MYSQLI
Forum PHP.pl > Forum > PHP
Azzoris
Stworzyłem sobie klasę

  1.  
  2. class db{
  3. private $con;
  4. private $host;
  5. private $db_user;
  6. private $db_password;
  7. private $db_name;
  8. // Create connection
  9. public function __construct($host, $db_user, $db_password, $db_name){
  10. $this->db_password = $db_password;
  11. $this->host = $host;
  12. $this->db_user = $db_user;
  13. $this->db_name = $db_name;
  14. $this->con = mysqli_connect($this->host, $this->db_user, $this->db_password, $this->db_name);
  15. mysqli_set_charset($this->con,"utf8");
  16. }
  17. public function db_select($query){
  18. $result = mysqli_query($this->con, $query);
  19. if ($result->num_rows > 0){
  20. while($row = $result->fetch_assoc()){
  21. $results[] = $row;
  22. }
  23. }
  24. return $results;
  25. }
  26. }

tworzę nowy objekt :

  1. $pages = new db($host, $db_user, $db_password, $db_name);
  2. $query = ('SELECT * FROM pages');
  3. $pages->db_select($query);
  4. print_r($pages);


Ale funkcja zamiast zwracać tablice assoc. oddaję coś takiego :
  1. db Object ( [con:db:private] => mysqli Object ( [affected_rows] => 4 [client_info] => mysqlnd 5.0.12-dev - 20150407 - $Id: 38fea24f2847fa7519001be390c98ae0acafe387 $ [client_version] => 50012 [connect_errno] => 0 [connect_error] => [errno] => 0 [error] => [error_list] => --!Array ( ) [field_count] => 3--! [host_info] => localhost via TCP/IP [info] => [insert_id] => 0 [server_info] => 5.5.5-10.1.36-MariaDB [server_version] => 50505 [stat] => Uptime: 24 Threads: 1 Questions: 6 Slow queries: 0 Opens: 18 Flush tables: 1 Open tables: 12 Queries per second avg: 0.250 [sqlstate] => 00000 [protocol_version] => 10 [thread_id] => 3 [warning_count] => 0 ) [host:db:private] => localhost [db_user:db:private] => root [db_password:db:private] => [db_name:db:private] => sti230319 )


i defakto dostaję to czego chcę... ale nie wiem jak to wyciągnąć;;;
viking
A po co tworzyć klasę która nie robi praktycznie nic więcej niż goła klasa mysqli a tylko neguje pewne możliwości? Gdybyś np chciał zwrócić fetch_object zamiast fetch_assoc to już problem. Zwraca ci obiekt mysqli więc możesz na nim wykonać http://php.net/manual/pl/class.mysqli.php
Azzoris
Nie czaje, chcę otrzymać rekordy z bazy w postaci tablicy po to fetch_assoc(). Jak to osiągnąć?

To jest wycinek classy w rzyczwistości jest bardziej rozbudowana ale sypie się właśnie w tym momencie bo zamiast rekordów dostaję cały objekt ;/

kiedy robie

  1. public function db_select($query){
  2. $result = mysqli_query($this->con, $query);
  3. if ($result->num_rows > 0){
  4. while($row = $result->fetch_assoc()){
  5. $results[] = $row;
  6. print_r ($row); echo '</br>';
  7. }
  8. }
  9. return $results;
  10. }




dostaje...
  1. Array ( [page_id] => 1 [page_name] => home [status] => 1 )
  2. Array ( [page_id] => 2 [page_name] => polecane [status] => 1 )
  3. Array ( [page_id] => 3 [page_name] => losuj [status] => 1 )
  4. Array ( [page_id] => 4 [page_name] => post [status] => 1 )


więc skąd $results[] posiada cały objekt??

Na moje oko powinno być :
  1. Array ( [page_id] => 1 [page_name] => home [status] => 1 ),
  2. Array ( [page_id] => 2 [page_name] => polecane [status] => 1 ),
  3. Array ( [page_id] => 3 [page_name] => losuj [status] => 1 ),
  4. Array ( [page_id] => 4 [page_name] => post [status] => 1 )
  5. )
viking
  1. $rows = $pages->db_select($query);
  2. print_r($rows);


Dodatkowo jjeśli if nie zostanie spełniony zwracasz nieokreśloną wartość.
Azzoris
Cytat(viking @ 11.11.2018, 15:38:17 ) *
  1. $rows = $pages->db_select($query);
  2. print_r($rows);

Ja pierdziele no przecież... jak mogłem to przeoczyć.

Cytat(viking @ 11.11.2018, 15:38:17 ) *
Dodatkowo jjeśli if nie zostanie spełniony zwracasz nieokreśloną wartość.

Masz racje dzięki, poprawione smile.gif
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.