Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP]Brak polskich znaków
Usperial
post 24.06.2019, 22:27:36
Post #1





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 22.06.2019

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


Hejka!
Po przeniesieniu się na inny hosting, w bazie mysql nie wyświetlają się polskie znaki, które wcześniej wysłane były przez formularz php.
Dodam, że na innym hostingu wszystko śmigało.
Przeszukałem całe forum, ale nie znalazłem odpowiedzi na moje pytanie.
w mysql jest ustawione utf8_general_ci
Pomocy! :<

  1. $con = mysqli_connect($host, $userName, $password, $dbName);
  2. mysqli_query("SET NAMES utf8");
  3.  
  4. $name = $_POST['name'];
  5. $surname = $_POST['surname'];
  6. $age = $_POST['age'];
  7. $sex = $_POST['sex'];
  8. $height = $_POST['height'];
  9. $weight = $_POST['weight'];
  10. $look = $_POST['look'];
  11. $personality = $_POST['personality'];
  12. $history = $_POST['history'];
  13. $img = $_POST['img'];
  14. $token = $_POST['token'];
  15.  
  16. $query2 = mysqli_query($con, "SELECT userDISID FROM tokens WHERE token='".$token."'");
  17. $userDISID = mysqli_fetch_row($query2);
  18.  
  19.  
  20.  
  21. $query = mysqli_query($con, "SELECT * FROM tokens WHERE token='".$token."'");
  22.  
  23.  
  24. if (!$query)
  25. {
  26. die('Error: ' . mysqli_error($con));
  27. }
  28.  
  29. else if(mysqli_num_rows($query) == 0){
  30.  
  31. echo "Nieprawidłowy token.";
  32. }
  33.  
  34. else{
  35. $userDISID2 = implode("|",$userDISID);
  36. $sql3 = "INSERT INTO kartyPostaci (token, userDISID, isVerified, name, surname, age, sex, height, weight, look, personality, history, img) VALUES ('$token', '$userDISID2', 'Nie', '$name', '$surname', '$age', '$sex', '$height', '$weight', '$look', '$personality', '$history', '$img')";
  37.  
  38. $query3 = mysqli_query($con, $sql3);
  39.  
  40.  
  41. $sql4 = "DELETE FROM tokens WHERE token = '$token'";
  42. $query4 = mysqli_query($con, $sql4);
  43.  
  44. $sql5 = "SET CHARSET utf8";
  45. $query5 = mysqli_query($con, $sql5);
  46. echo "Dodano kartę.";
  47.  
  48. }
  49.  
  50.  
  51.  
  52.  
  53.  
  54.  
  55.  
  56.  
  57.  
  58. ?>
Go to the top of the page
+Quote Post
Tomplus
post 25.06.2019, 01:34:24
Post #2





Grupa: Zarejestrowani
Postów: 1 828
Pomógł: 225
Dołączył: 20.03.2005
Skąd: Będzin

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


Skoro pytanie dotyczy kodowania mysql, to pełen kod skryptu jest zbyteczny. Wystarczą pierwsze dwie linijki tak naprawdę.

Problem z kodowaniem jest znany od dawna. Rozwiązanie ma jednak różne drogi.
Nie powiedziałeś nam jakie kodowanie miała baza danych wcześniej. Bo to że deklarujesz utf8 dla mysql nie ma znaczenia, a możesz namieszać.

W jakim kodowaniu dane w ogóle wcześniej były zapisywane. Być może w ISO-88590-2 albo Windows-1250, a potem na siłę przekonwertowane w bazie na UTF8.
Może kodowanie strony nie jest UTF-8?

Jak masz dostęp jeszcze do starej bazy danych, możesz spróbować inną metodą przenieść dane. Inną metodą zaktualizować. Chociaż proste to nie jest.
Otwierasz dwa połączenia z bazą:
Jeden do starej bazy, gdzie dane wyświetlają się poprawnie na domyślnym kodowaniu.
Drugi do nowej na UTF8.

Wykonujesz update danych z $sql1 do w $sql2. Bez żadnych dodatkowych kombinacji.
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: 28.03.2024 - 15:08