Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Obcinanie Zawartosci Zmiennej
-WAN-
post
Post #1





Goście







Wlasciwie to nie jestem w 100% pewny, co sie z ta zawartoscia zmiennej dzieje, wiem jednak, ze nie zawiera ona tego, co powinna. Sytuacja wyglada tak:

Kod
echo ("SELECT a".$x." FROM usr WHERE log='$login'");
$sqlQuery = mysql_query("SELECT a".$x." FROM usr WHERE log='$login'");
$sqlArray = mysql_fetch_array( $sqlQuery );
$a[$x] = $sqlArray['a'.$x];
echo $a[$x];


Pierwsze echo to debug - ma pokazac wlasciwa tresc zapytania. I okazuje sie, ze wszystko tam jest poprawnie (o ironio, niestety...). sprawdzalem te zapytania w myadminie i zwracany rekord byl jak najbardziej poprawny. Co gorsza, nie dzialo sie tak zawsze i troche posiedzialem nad tym, zenim sie zorientowalem, dlaczego czasami jest ok. Otoz, jesli wynikiem jest pojedyncza cyfra, to wszystko jest ok. Ale jesli jest to liczba dwucyfrowa, to jednosci sa zwyczajnie obcinane i zostaje sama cyfra dziesiatek. I zamiast 10, 11, 12 otrzymuje same jedynki, zamiast 20, 21, 22 same dwojki itd. Wiec wszystko jest ok, do momentu w ktorym z niewiadomych przyczyn zmienna jest obcinana... Probowalem juz wymuszac typ na int i nic to nie dalo. Tak samo kombinacje typu $a['$x'], $a["$x"], $a{$x} - bez roznicy co bym nie dal, zawsze jest tak samo... Help...
Go to the top of the page
+Quote Post
ActivePlayer
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 1 224
Pomógł: 40
Dołączył: 6.07.2004
Skąd: Wuppertal

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


  1. <?php
  2. echo '<pre>';
  3. echo ("SELECT a".$x." FROM usr WHERE log='$login'");
  4. $sqlQuery = mysql_query("SELECT a".$x." FROM usr WHERE log='$login'");
  5. $sqlArray = mysql_fetch_array( $sqlQuery );
  6. var_dump($sqlArray);
  7. $a[$x] = $sqlArray['a'.$x];
  8. echo $a[$x];
  9. ?>


wykonaj i wklej wynik ;]
Go to the top of the page
+Quote Post
-Gość-
post
Post #3





Goście







Przed chwila zmienilem
  1. <?php $sqlQuery = mysql_query("SELECT a".$x." FROM usr WHERE log='$login'"); ?>

na
  1. <?php $sqlQuery = mysql_query("SELECT a".$x." FROM usr WHERE log='".$login."'"); ?>

I zaczelo dzialac... Pomyslalem sobie, ze to przeciez jest to samo i zmienilem z powrotem. Teraz moj "wadliwy" kod wyglada tak:
  1. <?php
  2. echo ("SELECT a".$x." FROM usr WHERE log='$login'"); 
  3. $sqlQuery = mysql_query("SELECT a".$x." FROM usr WHERE log='$login'"); 
  4. $sqlArray = mysql_fetch_array( $sqlQuery ); 
  5. a[$x] = $sqlArray['a'.$x];
  6. echo $a[$x];
  7. ?>

Czyli nic sie nie zmienilo. Ale wcale nie przestalo dzialac... Nie ma chyba sensu teraz wklejac wyniku Twojego testu (w koncu wszystko gra).
Ale niezmiernie mnie ciekawi... co sie stalo? Czy to sie samo naprawilo, czy jak? No bo jesli samo, to i sie samo moze zepsuc...
Go to the top of the page
+Quote Post
WAN
post
Post #4





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 30.12.2007

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


Jako ze sie zarejestrowalem, to witam wszystkich uzytkownikow smile.gif
Teraz bede mogl edytowac posty takie jak powyzej (do kasacji jest - to moje dzielo i przedwczesny wniosek ze wszystko gra).


Cytat(ActivePlayer @ 30.12.2007, 21:57:22 ) *
(...)
wykonaj i wklej wynik ;]


Dolaczam wynik Twojego testu, bo zdecydowanie nie gra:
  1. <?php
  2. SELECT a1 FROM usr WHERE log='XXX'array(2) {
  3. [0]=>
  4. string(2) "16"
  5. ["a1"]=>
  6. string(2) "16"
  7. }
  8. string(5) "t1233"
  9. 1SELECT a2 FROM usr WHERE log='XXX'array(2) {
  10. [0]=>
  11. string(2) "17"
  12. ["a2"]=>
  13. string(2) "17"
  14. }
  15. string(5) "t1133"
  16. 1SELECT a3 FROM usr WHERE log='XXX'array(2) {
  17. [0]=>
  18. string(2) "18"
  19. ["a3"]=>
  20. string(2) "18"
  21. }
  22. string(5) "t1113"
  23. ?>
Go to the top of the page
+Quote Post
Hazel
post
Post #5





Grupa: Zarejestrowani
Postów: 492
Pomógł: 33
Dołączył: 16.08.2007
Skąd: Wrocław

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


A wykonaj po prostu tyle:
  1. <?php
  2. $x = 1;
  3. $sqlQuery = mysql_query("SELECT a".$x." FROM usr WHERE log='$login'");
  4. $sqlArray = mysql_fetch_array( $sqlQuery );
  5. var_dump($sqlArray['a1']);
  6. ?>


Powinno dać wynik 16, a nie 1 ani 6.

Ten post edytował Hazel 31.12.2007, 14:24:15


--------------------
Go to the top of the page
+Quote Post
WAN
post
Post #6





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 30.12.2007

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


Zrobilem cos innego... przed tym wszystkim zrobilem kontrolne wyswietlanie tablicy $a i jakims cudem zawierala one te liczby jeszcze przed operacjami mysqlowymi. A jestem pewien, ze wczesniej nic z ta tablica nie robie. Dalem unset $a i zaczelo dzialac. Nadal jednak nie mam pojecia skad ten blad sie wlasciwie wzial...
Go to the top of the page
+Quote Post
Hazel
post
Post #7





Grupa: Zarejestrowani
Postów: 492
Pomógł: 33
Dołączył: 16.08.2007
Skąd: Wrocław

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


Raczej wykonaj kod, który Ci podałem. U mnie analogiczne kody działają poprawnie, więc nie wiem, gdzie może być błąd.


--------------------
Go to the top of the page
+Quote Post
WAN
post
Post #8





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 30.12.2007

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


Cytat(Hazel @ 31.12.2007, 18:29:09 ) *
Raczej wykonaj kod, który Ci podałem. U mnie analogiczne kody działają poprawnie, więc nie wiem, gdzie może być błąd.


Wlasnie klopot w tym, ze Twoj kod tez nie dzialal...
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 Aktualny czas: 20.08.2025 - 01:00