Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Błąd obsługi klasy mysqli
Forum PHP.pl > Forum > PHP
Saddam92
Witam,
pisze taki maly skrypcik dla rotatora banerów i natknąłem się na pewien błąd:
Cytat
Call to a member function fetch_assoc() on a non-object in (..adres..) on line 47
linijki 45-47 mojego kodu to:
  1. <?php
  2. $zap = 'SELECT sciezka, opis FROM bannery WHERE id='.addslashes($_GET['id']).'';
  3. $wyn=$db->query($zap);
  4. $row=$wyn->fetch_assoc();
  5. ?>
Co poprawić tak żeby działało questionmark.gif Od razu dodam że wcześniej mam połaczenie z bazą poprzez klase mysqli...

Proszę o w miarę szybką pomoc i z góry dziękuje.
Saddam92
starach
Najprawdopodobniej wyświetla ci błąd bo nie w wyniku nic nie ma.
Nie jestem pewien bo nie stosuję wbudowanej klasy obsługi połączeń mysqli
ale przed pobraniem sprawdź czy zwrócił ci jakiekolwiek wyniki za pomocą
  1. <?php
  2. if($db->affected_rows > 0)
  3. $row=$wyn->fetch_assoc();
  4. ?>
KG-
Spróbuj tak, bo prawdopodobnie baza uważa że masz błąd w zapytaniu albo nie zwraca rekordów.
  1. <?php
  2. $wyn = $db->query($zap) or die($db->error);
  3. if ($wyn) { $row = $wyn->fetch_assoc(); }
  4. ?>


PS. affected_rows jest dla INSERT,DELETE,REPLACE, dla SELECT powinno się używać num_rows.

Edit: literówki
Saddam92
Okej wyeliminowałem ten błąd ale mam jeszcze pytanie dlaczego takie zapytanie nie dodaje mi wyniku od bazy bądź też jak się upewnić że jestem z bazą połączony questionmark.gif

zapytanie:
  1. <?php
  2. $sql = 'INSERT INTO bannery VALUES (NULL, ''.$sciezka.'', ''.$opis.'', ''.$ilosc.'', 0 , 1';
  3. $db->query($sql);
  4. ?>

@KG -- zastosowałem coś takiego jak napisałeś i wywala mi błąd:
Cytat
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
z czym to jest związane ? z nie właściwym połaczeniem z bazą czy złym zapytanie SQL questionmark.gif jak to naprawić questionmark.gif
nospor
  1. <?php
  2. $sql = "INSERT INTO bannery VALUES (NULL, '$sciezka', '$opis', '$ilosc', 0 , 1)";
  3. ?>

Nie domknales nawiasu (
Saddam92
poprawione ale błąd dalej ten sam.. i powoduje go to co napisał KG .. a skoro jest jakis błąd SQL to jak go naprawić questionmark.gif
  1. <?php
  2. $zap = 'SELECT sciezka, opis FROM bannery WHERE id='.addslashes($_GET['id']).'';
  3. $wyn = $db->query($zap) or die($db->error);
  4. if ($wyn) {
  5. $row=$wyn->fetch_assoc();
  6. ...
  7.  }
  8. ?>
KG-
No przede wszystkim żeby naprawić błąd to trzeba znać np jego treść jaką powinieneś otrzymać na ekranie smile.gif
To nie musi być źle skonstruowane strukturalnie zapytanie, może być np literówka w nazwie pola itp.
Btw przy INSERT też używaj or die($db->error) bo inaczej nie będziesz miał kontroli które zapytania są błędne a które nie.
Saddam92
działa.. okazuje sie że błąd byl spowodowany przez zupełnie co innego i to nie na "polu" łączenia się z SQL..

ale i tak za wszelką pomoc bardzo dziękuje..
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.