Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MSSQL][PHP] Przerobienie wyników MSSQL funkcją iconv()
Forum PHP.pl > Forum > Przedszkole
kolaborek
Witam.

Nie mogę poradzić sobie z poprawnym przekonwertowaniem danych pobieranych z MSSQL w postaci Windows-1250 na UTF-8.
Przyznam szczerze, że robię to z "różnych różności" znalezionych w Internecie, więc proszę o wyrozumiałość smile.gif

Mam taki kod
  1. $zapytanie = $dbh->prepare("select * from baza; ");
  2.  
  3. $zapytanie->execute();
  4.  
  5. while ($rekord = $zapytanie->fetch())
  6. {
  7. foreach(array_keys($rekord) as $key)
  8. {
  9. $zapytanie[$key] = iconv('UTF-8','Windows-1250', $rekord[$key]);
  10. }
  11. }
  12.  
  13. echo '<table>';
  14. while ($rekord = $zapytanie->fetch())
  15. {
  16. echo' <tr>
  17. <td>'.$nr_wiersza.'</td>
  18. <td>'.$rekord.'</td>
  19. <td>'.$rekord.'</td>
  20. <td><b>'.$rekord[imie_nazwisko].'</b><br />'.$rekord[przedmiot].'</td>
  21. <td>'.$rekord[uwagi].'</td>
  22. </tr>';
  23. }
  24. echo '/<table>';
  25.  
  26.  


I otrzymuję błąd "Fatal error: Cannot use object of type PDOStatement as array in ..." dotyczący wiersza
  1. $zapytanie[$key] = iconv('UTF-8','Windows-1250', $rekord[$key]);


Jak to ogarnąć?
nospor
Problem nie dotyczy iconv a tego jak sie dobierasz do obiektu PDOSTatement...
wyswietl sobie $rekord
var_dump($rekord);
a zobaczysz ze to nie jest tablica.
kapslokk
Błąd generuje $zapytanie[$key];
$zapytanie to obiekt. Stwórz nową tablicę i do niej przypisuj przekonwertowane wartości.
nospor
$zapytanie[$key] - no tak, nie spojrzalem na poczatek linii smile.gif
kolaborek
Ok. Czyli z tego co rozumiem to musiałem utworzyć zmienną tablicową. Nazwałem ją nowa_tablica, coby się wyróżniało smile.gif Potem zmienię.
Ale coś chyba jest nie tak...

Poleceniem
  1. print_r($nowa_tablica);
chciałem wyświetlić tablicę, ale tak jakby wyświetliło mi tylko jeden wiersz...
Na dodatek cały kod byczy się teraz o wiersz
  1. while ($rekord = $nowa_tablica->fetch())

Mówi do mnie "Fatal error: Call to a member function fetch() on a non-object in "



  1. $zapytanie->execute();
  2.  
  3. $nowa_tablica = Array();
  4.  
  5. while ($rekord = $zapytanie->fetch())
  6. {
  7. foreach(array_keys($rekord) as $key)
  8. {
  9. $nowa_tablica[$key] = iconv('UTF-8','ISO-8859-9', $rekord[$key]);
  10. }
  11. echo '<br /><br />';
  12. }
  13. print_r($nowa_tablica);
  14.  
  15.  
  16. while ($rekord = $nowa_tablica->fetch())
  17. {
  18. echo' <tr>
  19. <td>'.$nr_wiersza.'</td>
  20. <td>'.$rekord[sygnatura].'</td>
  21. <td>'.$rekord[godzina].'</td>
  22. <td><b>'.$rekord[imie_nazwisko].'</b><br />'.$rekord[przedmiot].'</td>
  23. <td>'.$rekord[uwagi].'</td>
  24. </tr>';
  25. $nr_wiersza++;
  26. }
kapslokk
  1. while ($rekord = $zapytanie->fetch())
  2. {
  3. foreach(array_keys($rekord) as $key)
  4. {
  5. $nowa_tablica[$key] = iconv('UTF-8','ISO-8859-9', $rekord[$key]);
  6. }
  7. echo '<br /><br />';
  8. }

zamien na
  1. $i = 0;
  2. while ($rekord = $zapytanie->fetch())
  3. {
  4. foreach(array_keys($rekord) as $key)
  5. {
  6. $nowa_tablica[$i][$key] = iconv('UTF-8','ISO-8859-9', $rekord[$key]);
  7. }
  8. $i++;
  9. echo '<br /><br />';
  10. }
nospor
A to:
while ($rekord = $nowa_tablica->fetch())
zamien na
foreach ($nowa_tablica as $rekord)

$nowa_tablica to TABLICA a nie obiekt PDO.
kolaborek
SUKCES!!!! .... w 99% ... wink.gif
Wygląda, że część PHP (dzięki Wam) została ogarnięta. Teraz wyszły błędy w zapytaniu SQL, ale to już powinienem ogarnąć smile.gif

Dziękuję Wam bardzo i niech wam Bozia w dzieciach wynagrodzi, a z mojej strony dostajecie "pomógł" smile.gif
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-2024 Invision Power Services, Inc.