Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [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
infoo1
post 23.12.2008, 11:53:54
Post #1





Grupa: Zarejestrowani
Postów: 117
Pomógł: 0
Dołączył: 12.11.2008

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


  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?

Ten post edytował infoo1 25.12.2008, 13:04:55
Go to the top of the page
+Quote Post
Pilsener
post 23.12.2008, 11:57:48
Post #2





Grupa: Zarejestrowani
Postów: 1 590
Pomógł: 185
Dołączył: 19.04.2006
Skąd: Gdańsk

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


Zapytanie do bazy zwraca zły lub pusty wynik.

Ten post edytował Pilsener 23.12.2008, 11:58:22
Go to the top of the page
+Quote Post
infoo1
post 23.12.2008, 12:15:12
Post #3





Grupa: Zarejestrowani
Postów: 117
Pomógł: 0
Dołączył: 12.11.2008

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


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.
Go to the top of the page
+Quote Post
mike
post 23.12.2008, 12:17:25
Post #4





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


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.
Go to the top of the page
+Quote Post
VRK
post 23.12.2008, 12:19:55
Post #5





Grupa: Zablokowani
Postów: 6
Pomógł: 0
Dołączył: 18.12.2008

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


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ł

Ten post edytował VRK 23.12.2008, 12:20:23
Go to the top of the page
+Quote Post
Zyx
post 23.12.2008, 12:55:08
Post #6





Grupa: Zarejestrowani
Postów: 952
Pomógł: 154
Dołączył: 20.01.2007
Skąd: /dev/oracle

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


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.


--------------------
Specjalista ds. głupich i beznadziejnych, Zyx
Nowości wydawnicze: Open Power Collector 3.0.1.0 | Open Power Autoloader 3.0.3.0
Go to the top of the page
+Quote Post
infoo1
post 25.12.2008, 11:47:32
Post #7





Grupa: Zarejestrowani
Postów: 117
Pomógł: 0
Dołączył: 12.11.2008

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


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)
Go to the top of the page
+Quote Post
WebKing
post 25.12.2008, 12:01:47
Post #8





Grupa: Zarejestrowani
Postów: 219
Pomógł: 16
Dołączył: 16.07.2007

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


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. ?>


Ten post edytował WebKing 25.12.2008, 12:03:39
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: 20.06.2024 - 04:35