2012-03-28 8 views
6

Oryginalne zapytanie SQL jest takie; SELECT id, post_title, post_date Z wp_posts gdzie id = '1'Problem z listą PHP (niezdefiniowane przesunięcie:)

Kiedy odzyskuję rekord, znajduję go, ale jeśli chodzi o zwrot wyników, jestem zdziwiony. Oto gdzie utknąłem.

while ($row = mysql_fetch_assoc($RS)) : 
     print_r ($row); 
     list($id,$post_title,$post_date) = $row; 
    endwhile; 

print_r ($ row) wyprowadza to; Array ([ID] => 1 [post_title] => Witaj, świecie! [Post_date] => 2012-03-27 03:28:27)

I kiedy uruchomię funkcję list tam (do celów debugowania oczywiście), rozumiem to;

Notice: Undefined offset: 2 in F:\inetpub\wwwroot\whatever\sql.php on line 147 
Notice: Undefined offset: 1 in F:\inetpub\wwwroot\whatever\sql.php on line 147 
Notice: Undefined offset: 0 in F:\inetpub\wwwroot\whatever\sql.php on line 147 

Co to powoduje?

Odpowiedz

5

Wymienić.

mysql_fetch_assoc($RS)

z:

mysql_fetch_array($RS, MYSQL_NUM)

to powinno pracować, ponieważ funkcja list Trys dostęp do tablicy przy użyciu klawiszy numerycznych.

4

Myślę, że odpowiedź leży gdzieś w tym;

list() działa tylko na tablicach liczbowych i zakłada indeksy liczbowe zaczynają się od 0.

:(

1

Użyłeś mysql_fetch_assoc, tak otrzymaną macierz w rzędzie ma danych pod klucz o nazwie kolumny, . natomiast „lista” stara się dopasować do zmiennych z wykorzystaniem liczbowych wartości indeksów tablicy można używać mysql_fetch_array zamiast

0

$ categ = val1 | lista val2

($ jeden, dwa dolne, trzy $) = @ split ("[|] ', $ categ);

Jeśli spróbujesz wyświetlić wartość, która nie jest dostępna, zwróci ona błąd Nie zdefiniowane przesunięcie.

Tutaj błąd zostanie niezdefiniowany offsetowe 2.

Ponieważ podczas spliting $ Categ, będzie miał tylko dwie wartości, jeśli próby uzyskania dostępu trzecią wartość to zwróci błąd.