Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL]Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in D:\www\includes\class_session.php on line 173
Forum PHP.pl > Forum > Przedszkole
infoo1
  1. <?php
  2. global $db;
  3.            $browser    =    $_SERVER['HTTP_USER_AGENT'];
  4.            $ip            =    $_SERVER['REMOTE_ADDR'];
  5.            $sql        =    &#092;"SELECT test_id FROM \" . COOKIESTESTS_TABLE . \" WHERE user_ip='\" . $ip . \"' AND user_browser='\" . $browser . \"'\";     echo $sql;
  6.            $sql        =    $db->sql_query($sql);
  7.            $result        =    $db->sql_fetcharray($sql);
  8.            $test_id    =    $result['test_id'];
  9. ?>

Pokazuje:
Cytat
SELECT test_id FROM cookiestests WHERE user_ip='127.0.0.1' AND user_browser='Mozilla/5.0 (Windows; U; Windows NT 6.0; pl; rv:1.9.0.5) Gecko/2008120122 Firefox/3.0.5'
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in D:\www\includes\class_session.php on line 173
Co jest źle?
Pilsener
Zapytanie do bazy zwraca zły lub pusty wynik.
infoo1
W bazie nie mam rekordów pasujących do tego z where. Co zrobić, aby sprawdzić, czy rekord odpowiadający temu z where istnieje? Bez warningów. Bo samo zapytanie przez pma działa i zwraca pusty wynik ("MySQL zwrócił pusty wynik (zero rekordów). (Wykonanie zapytania trwało 0.0003 sekund(y))").

To nie to. Nawet po wrzuceniu rekordów nie działa.
mike
Cytat(infoo1 @ 23.12.2008, 12:15:12 ) *
Co zrobić, aby sprawdzić, czy rekord odpowiadający temu z where istnieje?
Wykonaj zapytanie i jelsi sa wyniki zrób pętlę po nich a jeśli nie to zrób cos innego.
Jak sprawdzić czy wyniki są? mysql_num_rows()

Proszę poprawić tytuł wątku na zgodny z zasadami działu Przedszkole.
VRK
Może tak?:
  1. <?php
  2. global $db;
  3.           $browser    =    $_SERVER['HTTP_USER_AGENT'];
  4.           $ip            =    $_SERVER['REMOTE_ADDR'];
  5.           $sql        =    "SELECT test_id FROM " . COOKIESTESTS_TABLE . " WHERE user_ip='" . $ip . "' AND user_browser='" . $browser . "'";     echo $sql;
  6.           $sql        =    $db->sql_query($sql);
  7.           if (mysql_num_rows($sql) > 0)
  8.           {
  9.                $result        =    $db->sql_fetcharray($sql);
  10.                $test_id    =    $result['test_id'];
  11.           }
  12. ?>


@EDIT mike ubiegł
Zyx
mysql_fetch_array() nie rzuca ostrzeżeniami przy pustym zbiorze wynikowym. Komunikat wyraźnie mówi: argument, który dostałem, nie jest identyfikatorem zbioru wyników (tymczasem zbiór pusty jest poprawnym zbiorem wyników). Jeśli zapytanie jest poprawne i działa dobrze, jedynym logicznym wytłumaczeniem jest błąd w klasie obiektu $db, który powoduje przekazanie do mysql_fetch_array() niewłaściwej wartości.
infoo1
Zmiany:
klasa db:
  1. <?php
  2. function sql_query($query)
  3.        {
  4.            $query = mysql_query($query) or die(mysql_error());
  5.            return $query;
  6.        }
  7.  
  8.        function sql_fetcharray($query)
  9.        {
  10.            $query = mysql_fetch_array($query) or die(mysql_error());
  11.            return $query;
  12.        }
  13. ?>

klasa user:
  1. <?php
  2. function get_userdata()
  3.        {
  4.            global $db, $session;
  5.  
  6.            $sql        =    "SELECT * FROM " . USERS_TABLE . " WHERE user_id=" . $session->get_user_id() . "";
  7.            $res        =    $db->sql_query($sql);echo 'a';
  8.            while ($row =    $db->sql_fetcharray($res))
  9.            {
  10.                $this->data[$row[0]] = $row[1];
  11.            }echo 'b';
  12.        }
  13. ?>
Jest biała strona, a po dodaniu echo 'a' i 'b', pokazuje tylko 'a'. Samo zapytanie jest poprawne. Co jest źle z tym mysql_fetch_array? Mam się przerzucić na pliki?

Dane o zmiennej $res: resource(18) of type (mysql result)
WebKing
Spróbuj tak:
  1. <?php
  2. function sql_query($query) {
  3.    $query = mysql_query($query) or die(mysql_error());
  4.    return $query;
  5. }
  6.  
  7. function sql_fetcharray($query) {
  8.    $result = @mysql_fetch_assoc($query);
  9.    if (!$result) {
  10.        echo mysql_error();
  11.        return false;
  12.    } else {
  13.        return $result;
  14.    }
  15. }
  16. ?>
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.