Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MySQL]Przenoszenie rekordów z tabel - kodowanie
Forum PHP.pl > Forum > Przedszkole
Watt
Witam serdecznie,

Natrafiłem na problem z którym nie mogę sobie poradzić. Chciałem przenieść rekordy z jednej tabeli do trugiej.
tabela1 - komórki mają kodowanie utf8_general_ci, metoda porównywania napisów dla całej tabeli utf8_general_ci, w tabeli2 identycznie. Gdy przenosze wartości przez php (plik *.php ma kodowanie UTF-8 (bez BOM)) polskie literki zamieniają się na pytajniki. Próbowałem kombinować z mysql_query('SET NAMES UTF8;'); przed INSERTem, ale na nic się to nie zdało. Bardzo proszę o pomoc bo nie mam pojęcia co z tym zrobic.

Pozdrawiam
Tajgeer
  1. mysql_query('SET NAMES utf8 COLLATE utf8_unicode_ci');

?
Watt
Niestety dalej to samo (pytajniki) sad.gif
Tajgeer
Pokaż kod odpowiedzialny za to przenoszenie.
Watt
To może sprecyzuje jak daje echo $tytul; to znaki są pokazywane źle (z pytajnikami zamiast PL znakow), natomiast w bazie są zapisane dobrze.

Kod
    $zapytanie2 = mysql_query('SELECT * FROM arty WHERE (jakosc >= 0 AND jakosc < 13) ORDER BY rand();')or die(mysql_error());
    while ($row2 = mysql_fetch_array($zapytanie2)){
    
        if($licznik > 2) return true;
          
        $zapytanie1 = mysql_query('SELECT * FROM dw WHERE id = '.$row2['dwid'].' LIMIT 1;')or die(mysql_error());
        $row1 = mysql_fetch_array($zapytanie1);
        
        $tytul = mysql_real_escape_string($row1['opis']);
//echo $tytul;
        $tresc = mysql_real_escape_string($row2['tresc']);
        $dwid = mysql_real_escape_string($row2['dwid']);
        
        $zapytanie1 = mysql_query('SELECT * FROM vb_thread WHERE artid = '.$row2['id'].' LIMIT 1;')or die(mysql_error());
        while ($row1 = mysql_fetch_array($zapytanie1)){ echo "Bylo - ".$row2['id']; continue 2;}
        

        $czesci = explode(" ", $tytul);
        
        for($i = 0; $i < sizeof($czesci); $i++)
        {
            $tagi = $tagi.", ".$czesci[$i];  
        }
        $tagi = mysql_real_escape_string($tagi);
                

        mysql_query("INSERT INTO `vb_post` (`postid`, `threadid`, `parentid`, `username`, `userid`, `title`, `dateline`, `pagetext`,
        `allowsmilie`, `showsignature`, `ipaddress`, `iconid`, `visible`, `attach`, `infraction`, `reportthreadid`, `importthreadid`, `importpostid`, `htmlstate`, `dbtech_thanks_cache`, `dbtech_thanks_enablethanks`, `dbtech_thanks_enablelike`, `dbtech_thanks_enabledislike`,
        `dbtech_thanks_requirethanks_content`, `dbtech_thanks_requirethanks_attach`, `dbtech_thanks_requirelike_content`,
        `dbtech_thanks_requirelike_attach`, `mobile`, `ua`, `artid`) VALUES
        ('', '', 0, '".$nickusera."', ".$idusera.", '".$tytul."', ".(time()).", '".$tresc."', 1, 1,
        '127.0.0.1', 0, 1, 0, 0, 0, 0, 0, 'on_nl2br', NULL, '1', '1', '1', '0', '0', '0', '0', NULL, NULL, ".$dwid.")")or die(mysql_error());


Wybaczcie za brak joinów, ale to jest skrypt używany raz dzinnie, wiec postanowiłem nie kombinować tongue.gif
Tajgeer
Próbowałeś dopisać:
  1. mysql_query('SET NAMES utf8');

zaraz po nawiązaniu połączenia i wybraniu bazy danych?

  1. mysql_query('SET NAMES utf8');
Watt
Tak. Próbowałem, też przed każdym zapytaniem i dalej nic. Co ciekawe, gdy wrzuce
Kod
echo mb_detect_encoding($row1['opis'])."<br />";

Wypisuje mi
Kod
ASCII
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.