Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][MySQL]Przenoszenie rekordów z tabel - kodowanie
Watt
post 20.08.2012, 13:24:33
Post #1





Grupa: Zarejestrowani
Postów: 372
Pomógł: 1
Dołączył: 13.06.2008

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


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
Go to the top of the page
+Quote Post
Tajgeer
post 20.08.2012, 13:29:27
Post #2





Grupa: Zarejestrowani
Postów: 290
Pomógł: 48
Dołączył: 11.05.2008
Skąd: Kielce

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


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

?
Go to the top of the page
+Quote Post
Watt
post 20.08.2012, 13:45:21
Post #3





Grupa: Zarejestrowani
Postów: 372
Pomógł: 1
Dołączył: 13.06.2008

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


Niestety dalej to samo (pytajniki) sad.gif
Go to the top of the page
+Quote Post
Tajgeer
post 20.08.2012, 13:46:49
Post #4





Grupa: Zarejestrowani
Postów: 290
Pomógł: 48
Dołączył: 11.05.2008
Skąd: Kielce

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


Pokaż kod odpowiedzialny za to przenoszenie.
Go to the top of the page
+Quote Post
Watt
post 20.08.2012, 13:56:21
Post #5





Grupa: Zarejestrowani
Postów: 372
Pomógł: 1
Dołączył: 13.06.2008

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


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

Ten post edytował Watt 20.08.2012, 14:22:43
Go to the top of the page
+Quote Post
Tajgeer
post 20.08.2012, 14:37:30
Post #6





Grupa: Zarejestrowani
Postów: 290
Pomógł: 48
Dołączył: 11.05.2008
Skąd: Kielce

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


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');
Go to the top of the page
+Quote Post
Watt
post 20.08.2012, 14:53:04
Post #7





Grupa: Zarejestrowani
Postów: 372
Pomógł: 1
Dołączył: 13.06.2008

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


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


Ten post edytował Watt 20.08.2012, 15:27:40
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 Wersja Lo-Fi Aktualny czas: 13.06.2025 - 16:05