Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][MySQL]Fatal error: Call to a member function fetch_assoc
Gruchol
post 4.01.2015, 16:01:00
Post #1





Grupa: Zarejestrowani
Postów: 242
Pomógł: 0
Dołączył: 28.11.2014

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


Witam,
Napisałem prosty system osiągnięć i na xamppie wszystko działało ok, jednak gdy wgrałem to na vpsa gdzie jest nginx i php5-fpm i włączyłem pokazywanie błędów wyskoczył błąd :
Fatal error: Call to a member function fetch_assoc() on a non-object in /usr/share/nginx/www/osiagniecia/osiagniecia.php on line 182

Błąd powtarza się w tych linijkach :
  1. $achivement17 = mysqli_query($db, "SELECT resetwieza FROM user_DATA WHERE user_name='$user_name'");
  2. $achivement18 = $achivement17->fetch_assoc()['resetwieza'];


  1. $achivement19 = mysqli_query($db, "SELECT resetlochy FROM user_DATA WHERE user_name='$user_name'");
  2. $achivement20 = $achivement19->fetch_assoc()['resetlochy'];


  1. $achivement21 = mysqli_query($db, "SELECT lvl FROM user_DATA WHERE user_name='$user_name'");
  2. $achivement22 = $achivement21->fetch_assoc()['lvl'];


Gdzie jest błąd ?
Proszę o pomoc i pozdrawiam.
Go to the top of the page
+Quote Post
fate
post 4.01.2015, 16:45:29
Post #2





Grupa: Zarejestrowani
Postów: 824
Pomógł: 106
Dołączył: 14.03.2012
Skąd: Warszawa

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


moze inna wersja php?


--------------------
Go to the top of the page
+Quote Post
Rysh
post 4.01.2015, 17:35:50
Post #3





Grupa: Zarejestrowani
Postów: 821
Pomógł: 111
Dołączył: 11.09.2006
Skąd: Biała Podlaska

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


Zajeździsz serwer, jak za każdym razem żeby pobrać jedną rzecz robisz zapytanie do bazy. Przecież to wszystko można pobrać jednym zapytaniem i rozbić sobie na kilka zmiennych.


--------------------
Go to the top of the page
+Quote Post
Gruchol
post 4.01.2015, 18:17:50
Post #4





Grupa: Zarejestrowani
Postów: 242
Pomógł: 0
Dołączył: 28.11.2014

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


Możesz przerobić te zapytania tak aby było ich jak najmniej?
Chciałbym mieć przykład.

Słyszałem o tablicach assoacyjnych jednak nie mogę nic znaleźć na ich temat.
Mój skrypt ma ponad 500 linijek z czego pewnie 400 to zapytania i chciałbym to jak najbardziej zoptymalizować.

Ten post edytował Gruchol 4.01.2015, 18:21:41
Go to the top of the page
+Quote Post
Rysh
post 4.01.2015, 21:14:01
Post #5





Grupa: Zarejestrowani
Postów: 821
Pomógł: 111
Dołączył: 11.09.2006
Skąd: Biała Podlaska

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


  1. $sql = mysqli_query($db, "SELECT resetwieza, resetlochy, lvl FROM user_DATA WHERE user_name='$user_name'");
  2. $dane = $sql->fetch_assoc();
  3. print_r($dane);

To co chcesz pobrać dajesz w SELECT po przecinku i wszystko będzie lądowało w $dane w tablicy czyli np. chcąc otrzymać wartość kolumny lvl będziesz miał:
  1. echo $dane['lvl'];

Wszystko wraz z przykładami masz tutaj: mysqli_fetch_assoc


--------------------
Go to the top of the page
+Quote Post
com
post 4.01.2015, 21:23:11
Post #6





Grupa: Zarejestrowani
Postów: 3 033
Pomógł: 366
Dołączył: 24.05.2012

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


nie mieszaj stylu proceduralnego z obiektowym, albo robisz tak albo tak, jak masz mysqli_query to musisz miec mysqli_fetch_assoc wink.gif http://php.net/manual/en/mysqli-result.fetch-assoc.php
Go to the top of the page
+Quote Post
Rysh
post 4.01.2015, 22:55:37
Post #7





Grupa: Zarejestrowani
Postów: 821
Pomógł: 111
Dołączył: 11.09.2006
Skąd: Biała Podlaska

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


Cytat(Rysh @ 4.01.2015, 21:14:01 ) *
  1. $sql = mysqli_query($db, "SELECT resetwieza, resetlochy, lvl FROM user_DATA WHERE user_name='$user_name'");
  2. $dane = $sql->fetch_assoc();
  3. print_r($dane);

To co chcesz pobrać dajesz w SELECT po przecinku i wszystko będzie lądowało w $dane w tablicy czyli np. chcąc otrzymać wartość kolumny lvl będziesz miał:
  1. echo $dane['lvl'];

Wszystko wraz z przykładami masz tutaj: mysqli_fetch_assoc


Cytat( @ 4.01.2015, 21:23:11 )
nie mieszaj stylu proceduralnego z obiektowym, albo robisz tak albo tak, jak masz mysqli_query to musisz miec mysqli_fetch_assoc wink.gif http://php.net/manual/en/mysqli-result.fetch-assoc.php


Faktycznie, moje niedopatrzenie. Powinno być:
  1. $sql = mysqli_query($db, "SELECT resetwieza, resetlochy, lvl FROM user_DATA WHERE user_name='$user_name'");
  2. $dane = mysqli_fetch_assoc($sql);
  3. print_r($dane);


Ten post edytował Rysh 4.01.2015, 22:56:13


--------------------
Go to the top of the page
+Quote Post
Gruchol
post 5.01.2015, 06:56:06
Post #8





Grupa: Zarejestrowani
Postów: 242
Pomógł: 0
Dołączył: 28.11.2014

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


a jeżeli zrobię to tak :
  1. $sql = mysqli_query($db, "SELECT resetwieza, resetlochy, lvl FROM user_DATA WHERE user_name='$user_name'");
  2. $dane = mysqli_fetch_assoc($sql);
  3. print_r($dane);


To czy mogę wybrać np. do wyświetlenia tylko resetwieza ?
Go to the top of the page
+Quote Post
untorched
post 5.01.2015, 07:33:24
Post #9





Grupa: Zarejestrowani
Postów: 318
Pomógł: 76
Dołączył: 27.12.2011
Skąd: Dąbrowa Górnicza

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


Cytat(Gruchol @ 5.01.2015, 06:56:06 ) *
a jeżeli zrobię to tak :
  1. $sql = mysqli_query($db, "SELECT resetwieza, resetlochy, lvl FROM user_DATA WHERE user_name='$user_name'");
  2. $dane = mysqli_fetch_assoc($sql);
  3. print_r($dane);


To czy mogę wybrać np. do wyświetlenia tylko resetwieza ?


  1. $sql = mysqli_query($db, "SELECT resetwieza, resetlochy, lvl FROM user_DATA WHERE user_name='$user_name'");
  2. $dane = mysqli_fetch_assoc($sql);
  3. echo $dane['resetwieza'];
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: 15.06.2024 - 17:20