Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Dziwny wynik MySQL, Tablica zwraca mi różne rekordy mimo że powinna ten sam :)
Prezi2907
post
Post #1





Grupa: Zarejestrowani
Postów: 107
Pomógł: 4
Dołączył: 11.08.2010
Skąd: Inowrocław

Ostrzeżenie: (10%)
X----


Witam

Na wstępie wiem że mysql_fetch_array jest funkcją wymierającą ale poprawiamy stary system w którym były one wykorzystywane a nie można od tak sobie wszystkiego przełączyć.
Po drugie jeżeli problem jest jakiś globalny to masa skryptów wymagać będzie poprawki w trybie meganatychmiastowym...

Problem jest w tym że po wyciągnięciu jednego wiersza tą funkcją zwraca on nam następujący wynik:

  1. (
  2. [0] => 0
  3. [id] => 5720617
  4. [1] => DDD
  5. [NrJakisTam] => DDD
  6. [2] => 01-07-2013
  7. [DataJakasTam] => 01-07-2013
  8. [3] => 3.20
  9. [oplata] => 3.20
  10. [4] => 256.00
  11. [oplata1] => 256.00
  12. [5] => 259.20
  13. ...
  14. }


Dziwne jest to że 0 i id nie ma tych samych wartości... Zapytanie jest proste i w żaden sposób nie przekombinowane.
Jakieś pomysły?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
Damonsson
post
Post #2





Grupa: Zarejestrowani
Postów: 2 355
Pomógł: 533
Dołączył: 15.01.2010
Skąd: Bydgoszcz

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


Nie robisz jakiegoś JOINa i nie masz dwóch kolumn id, lub coś w tym stylu?
Go to the top of the page
+Quote Post
Prezi2907
post
Post #3





Grupa: Zarejestrowani
Postów: 107
Pomógł: 4
Dołączył: 11.08.2010
Skąd: Inowrocław

Ostrzeżenie: (10%)
X----


Cytat(Damonsson @ 11.09.2013, 09:22:48 ) *
Nie robisz jakiegoś JOINa i nie masz dwóch kolumn id, lub coś w tym stylu?


Jak pisałem, pytanie jest stosunkowo proste...
Przecież MySQL wywaliłby błąd w przypadku 2 tych samych kolumn. Po drugie nawet jeżeli takie coś by miało miejsce to tablica asocjacyjna by pokazała jakiś dziwny wynik a nie numeryczna która generowana jest w zależności od ilości pól (IMG:style_emoticons/default/smile.gif) A ten identyfikator nie pojawia się nigdzie indziej tylko na pierwszej pozycji bo dalej w raportach jest wykorzystywany (IMG:style_emoticons/default/smile.gif)

Ps. Poprawna jest wartość w tablicy asocjacyjnej. Moje pytanie dotyczy wartości numerycznej tablicy ponieważ w starych kodach wszędzie jest ona wykorzystywana i jak się okaże że to jakiś błąd bazy danych (funkcji mysql_fetch_array) to jakieś 70-80% kodów (ponad 300 plików) będzie do poprawki (IMG:style_emoticons/default/smile.gif)

Ten post edytował Prezi2907 11.09.2013, 08:34:18
Go to the top of the page
+Quote Post
Lysiur
post
Post #4





Grupa: Zarejestrowani
Postów: 66
Pomógł: 11
Dołączył: 25.07.2012

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


A w dokumentacji Pan patrzył (IMG:style_emoticons/default/wink.gif)

mysql_fetch_array

Kod
array mysql_fetch_array ( resource $result [, int $result_type = MYSQL_BOTH ] )


Funkcja przyjmuje dwa parametry, i Twoja tablica jest wynikiem funkcji z domyslnym parametrem MYSQL_BOTH (który zwraca wynik w postaci tablicy numerycznej i asocjacyjnej).

Uzyj MYSQL_ASSOC lub MYSQL_NUM <- w zależności co potrzebujesz akurat.

Ten post edytował Lysiur 11.09.2013, 12:27:41
Go to the top of the page
+Quote Post
Prezi2907
post
Post #5





Grupa: Zarejestrowani
Postów: 107
Pomógł: 4
Dołączył: 11.08.2010
Skąd: Inowrocław

Ostrzeżenie: (10%)
X----


Cytat(Lysiur @ 11.09.2013, 13:24:54 ) *
A w dokumentacji Pan patrzył (IMG:style_emoticons/default/wink.gif)

mysql_fetch_array

Kod
array mysql_fetch_array ( resource $result [, int $result_type = MYSQL_BOTH ] )


Funkcja przyjmuje dwa parametry, i Twoja tablica jest wynikiem funkcji z domyslnym parametrem MYSQL_BOTH (który zwraca wynik w postaci tablicy numerycznej i asocjacyjnej).

Uzyj MYSQL_ASSOC lub MYSQL_NUM <- w zależności co potrzebujesz akurat.


A posta czytałeś? Ja się człowieku nie pytam o tablice numeryczne i asocjacyjne tylko o wynik pierwszej tablicy numerycznej względem tablicy asocjacyjnej.

Prościej żebyś zrozumiał:
Indeks tablicy numerycznej (0) wskazuje na wartość 0 a powinno mieć wartość jak w przypadku tablicy asocjacyjnej o indeksie "id". Czy teraz Pan rozumie zagadnienie i problem jaki się pojawił ?

Ps. Nie użyje żadnego z powyższych bo to przestarzałe funkcje... I tak ogólnie to zapraszam do tego samego manuala aby poczytać o wyciąganych właśnie danych metodą fetch_array();

Ten post edytował Prezi2907 11.09.2013, 18:25:04
Go to the top of the page
+Quote Post
Damonsson
post
Post #6





Grupa: Zarejestrowani
Postów: 2 355
Pomógł: 533
Dołączył: 15.01.2010
Skąd: Bydgoszcz

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


A nie masz gdzieś dalej w kodzie nadpisania dla klucza 0? Sama w sobie funkcja nie może zwrócić 2 różnych wartości, nie ma takiego przypadku nigdzie opisanego.
Go to the top of the page
+Quote Post
sowiq
post
Post #7





Grupa: Zarejestrowani
Postów: 1 890
Pomógł: 339
Dołączył: 14.12.2006
Skąd: Warszawa

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


@Prezi2907, może łatwiej będzie jak wkleisz tutaj dwie rzeczy:
1. Zapytanie SQL
2. Ścieżkę, jaką przechodzą dane od chwili pobrania z bazy do sprawdzenia co jest w tablicy.

[edit]
Zauważyłem też, że uciąłeś kawałek tablicy wynikowej. A nie zawsze jest tak, że ilość kluczy numerycznych = ilość kluczy asocjacyjnych:
Cytat
If two or more columns of the result have the same field names, the last column will take precedence. To access the other column(s) of the same name, you must use the numeric index of the column or make an alias for the column.


Ten post edytował sowiq 12.09.2013, 08:49:10
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 3.10.2025 - 17:51