Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Klasa obsługująca MYSQLI
Azzoris
post 11.11.2018, 14:51:26
Post #1





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 3.01.2018

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


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ąć;;;

Ten post edytował Azzoris 11.11.2018, 14:54:39
Go to the top of the page
+Quote Post
viking
post 11.11.2018, 15:05:12
Post #2





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
Dołączył: 30.08.2006

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


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


--------------------
Go to the top of the page
+Quote Post
Azzoris
post 11.11.2018, 15:30:15
Post #3





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 3.01.2018

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


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. )


Ten post edytował Azzoris 11.11.2018, 15:37:34
Go to the top of the page
+Quote Post
viking
post 11.11.2018, 15:38:17
Post #4





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
Dołączył: 30.08.2006

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


  1. $rows = $pages->db_select($query);
  2. print_r($rows);


Dodatkowo jjeśli if nie zostanie spełniony zwracasz nieokreśloną wartość.


--------------------
Go to the top of the page
+Quote Post
Azzoris
post 11.11.2018, 15:49:50
Post #5





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 3.01.2018

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


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
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 28.03.2024 - 17:22