Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Pobieranie danych z bazy MySQL
Forum PHP.pl > Forum > Przedszkole
phpoint
Witam,
Podczas próby pobrania danych z serwera SQL wyskoczył mi komunikat o błędzie:
Cytat
Call to a member function fetch_array() on a non-object

Komunikat wskazuje na linie:
  1. <?php
  2. while ($row = $result->fetch_array(MYSQLI_ASSOC))
  3. ?>


Całość:
  1. <?php
  2. if (mysqli_connect_errno()) 
  3. {
  4. printf("Connect failed: %s\n", mysqli_connect_error());
  5.  exit();
  6.  
  7.  
  8. $result = $mysqli->query("SELECT title, long FROM section WHERE category_section = 1");
  9.  
  10. while ($row = $result->fetch_array(MYSQLI_ASSOC))
  11. {
  12.  echo $row['title'];
  13.  echo $row['long'];
  14. }
  15. ?>

Dlaczego paser twierdzi że to nie jest obiekt? i jak usunąć tą usterkę.
ViX
Wystarczy tyle:

<?php
while ($row = $result->fetch_array())
?>

ale wtedy odwołujesz sie tak:

$row[0], $row[1] etc

a w przypadku jak chcesz sie odwoływać:

echo $row['title'];
echo $row['long'];

to proponuje:

<?php
while ($row = $result->fetch_assoc())
?>

jest jeszcze opcja obiektowa:

<?php
while ($row = $result->fetch_object())
?>

i wtedy wyglada to tak:
$row->nazwa_kolumny
phpoint
Postąpiłem zgodnie z Twoją sugestią
  1. <?php
  2. $result = $mysqli->query("SELECT title, long FROM section WHERE category_section = 1");
  3. while ($row = $result->fetch_assoc())
  4. {
  5.  echo $row->title;
  6.  echo $row->long;
  7. }
  8. ?>

no i niestety również w tym samym miejscu pojawił się komunikat (ten sam).

Dziękuję za podpowiedź odnośnie odczytywania kolumn.

Lecz kiedy wsadzę to w instrukcję warunkową IF, wyskakuje mi informacja o błędzie.
  1. <?php
  2. if($result = $mysqli->query('SELECT title, long FROM section'))
  3. {
  4. while ($row = $result->fetch_assoc())
  5. {
  6.  $sectionArray = array(
  7. 'sectionTitle'=>$row['title'],
  8. 'sectionLong'=>$row['long']
  9. );
  10. echo $row->title;
  11. echo $row->long;
  12. }
  13.  
  14. exit();
  15. }
  16. ?>

Dlatego problem pojawia się w:
  1. <?php
  2. $result = $mysqli->query('SELECT title, long FROM section')
  3. ?>

co już kompletnie mnie zbija z tropu.
kaem
No nie do końca postąpiłeś jak ViX napisał winksmiley.jpg Musisz użyć
  1. <?php
  2. $result->fetch_object())
  3. ?>
phpoint
Cytat(kaem @ 18.08.2008, 14:54:03 ) *
No nie do końca postąpiłeś jak ViX napisał winksmiley.jpg Musisz użyć
  1. <?php
  2. $result->fetch_object())
  3. ?>

A Tak faktycznie, lecz nadal problem występuje w linii:
  1. <?php
  2. if($result = $mysqli->query('SELECT title, long FROM section'))
  3. ?>


  1. <?php
  2. if($result = $mysqli->query('SELECT title, long FROM section'))
  3. {
  4. while ($row = $result->fetch_object())
  5. {
  6. echo $row->title;
  7. echo $row->long;
  8. }
  9.  
  10. exit();
  11. } else {
  12. echo 'blad';
  13. }
  14. ?>
ViX
A czy kolega połączył sie z bazą danych?

  1. <?php
  2. $mysqli = new mysqli('host', 'login', 'haslo', 'baza');
  3. ?>
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.