Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Obcinanie Zawartosci Zmiennej
Forum PHP.pl > Forum > Przedszkole
WAN
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...
ActivePlayer
  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ść
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...
WAN
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. ?>
Hazel
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.
WAN
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...
Hazel
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.
WAN
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...
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.