Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Funkcja pgp - Zapytanie do bazy danych, Problem z funkcją php
tarzinio
post
Post #1





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 8.03.2016

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


Witam serdecznie. Chce sobie ułatwić sprawę odnośnie zapytań do bazy danych. Stworzyłem wiec funkcję, jednak przeglądarka wyrzuca mi błąd. Gdy ciało funkcji wyrzucę poza funkcję to wszystko jest ok. Co może być nie tak?

Funkcja:
  1. function db_select($zap){
  2. $z = $mysqli->query($zap);
  3. // zapisujemy wynik zapytania do tablicy asocjacyjnej
  4. $z = $z->fetch_assoc();
  5. //return $z;
  6. // zwalniamy pamięć z wyniku
  7. $z->free();
  8. }


Wywołanie funkcji
  1. $a = db_select("SELECT * FROM `tarzinio`");


Błąd jaki wyrzuca
  1. Fatal error: Call to a member function query() on a non-object in <TU ŚCIEŻKA> on line 26
  2. W LINI 66 ZNAJDUJE SIĘ $z = $mysqli->query($zap);


Powie mi ktoś co jest nie tak?(IMG:style_emoticons/default/sad.gif)

Pozdrawiam (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
tarzinio
post
Post #2





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 8.03.2016

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


  1. function db_select($zap){
  2. global $mysqli;
  3. $z = $mysqli->query($zap);
  4. // zapisujemy wynik zapytania do tablicy asocjacyjnej
  5. $z = $z->fetch_assoc();
  6. return $z;
  7. // zwalniamy pamięć z wyniku
  8. //$z->free();
  9. }

Takie rozwiązanie działa. Dziękuje bardzo za pomoc (IMG:style_emoticons/default/smile.gif) Na pewno wgryzę się w klasy i ogarnę pomysł kolegi (IMG:style_emoticons/default/smile.gif) Dziękuje wam (IMG:style_emoticons/default/smile.gif)

W sumie teraz mam inny problem. Funkcja
  1. function db_select($zap){
  2. global $mysqli;
  3. $z = $mysqli->query($zap);
  4. // zapisujemy wynik zapytania do tablicy asocjacyjnej
  5. $z = $z->fetch_array(MYSQLI_ASSOC);
  6. return $z;
  7. // zwalniamy pamięć z wyniku
  8. $z->free();
  9. unset($zap,$z);
  10. }


zwraca mi zawsze jedną wartość. Jak zorbić by zwracało mi całą tablice wyciągniętą z bazy? Tak mogę usunąć $z = $z->fetch_array(MYSQLI_ASSOC) ale wtedy mój print zwraca
  1. [current_field] => 0
  2. [field_count] => 1
  3. [lengths] =>
  4. [num_rows] => 32
  5. [type] => 0


zamiast pięknego array (IMG:style_emoticons/default/sad.gif)

Zrobiłem coś takiego:
  1. function db_select($zap){
  2. global $mysqli;
  3. $z = $mysqli->query($zap);
  4. // zapisujemy wynik zapytania do tablicy asocjacyjnej
  5. //$z = $z->fetch_array(MYSQLI_ASSOC); //- wyciąga jedną zmienną
  6. $wynik = array();
  7. $num = 0;
  8. while ($wyn = $z->fetch_assoc()) {
  9. $wynik[$num]= $wyn;
  10. $num ++;
  11. }
  12. return $wynik;
  13.  
  14.  
  15. // zwalniamy pamięć z wyniku
  16. $z->free();
  17. unset($zap,$z, $wynik);
  18. }


Jednak pytanko. Da się to ładniej, schludniej napisać?

Ten post edytował tarzinio 8.03.2016, 23:02:56
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: 8.10.2025 - 17:38