Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP] Błędne kodowanie znaków przesłanych do bazy danych
Lethys
post 13.08.2014, 12:29:42
Post #1





Grupa: Zarejestrowani
Postów: 642
Pomógł: 2
Dołączył: 9.03.2006

Ostrzeżenie: (30%)
XX---


Mam problem z kodowaniem znaków.

Cała baza danych jest ustawiona na: utf8_general_ci.

Kod na stronie jest pisany pod UTF-8:

  1. <meta http-equiv="content-type" content="text/html; charset=UTF-8">


Przesłanie danych do bazy danych:

  1. if (isset ($_POST['submit'])){
  2.  
  3.  
  4. header("Content-Type: text/html; charset=UTF-8");
  5.  
  6. // Check connection
  7. if (mysqli_connect_errno()) {
  8. echo "Failed to connect to MySQL: " . mysqli_connect_error();
  9. }
  10.  
  11. // escape variables for security
  12. $nowyopis = mysqli_real_escape_string($con, $_POST['nowy_opis']);
  13. $idfilmu = mysqli_real_escape_string($con, $_POST['id_filmu']);
  14.  
  15. mysql_query("set names'utf8'");
  16. mysql_query("set character_set utf8_unicode_ci");
  17.  
  18. $sql="UPDATE pozycje SET opisfilmu='$nowyopis' WHERE id='$idfilmu'";
  19.  
  20. if (!mysqli_query($con,$sql)) {
  21. die('Error: ' . mysqli_error($con));
  22. }
  23.  
  24.  
  25. mysqli_close($con);
  26.  
  27. //odświeżenie strony
  28. header('Location: '.$_SERVER['PHP_SELF']);
  29.  
  30. }


Plik php zapisany w kodowaniu UTF-8. Czyli generalnie wszystko ustawione na jedno kodowanie a do bazy danych dane są błędnie zapisywane.

i tak wyraz: Łomża w bazie danych ma postać: Łomża

Co jest nie tak?


--------------------
filmy podobne do - wyszukiwarka podobnych filmów
motywacja do działania - Bądź Lepszy
Go to the top of the page
+Quote Post
Turson
post 13.08.2014, 12:33:02
Post #2





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


Skoro używasz mysqli_ to po co NAMES ustawiasz w mysql_ ...?
http://php.net//manual/pl/mysqli.set-charset.php
Go to the top of the page
+Quote Post
Lethys
post 13.08.2014, 12:40:07
Post #3





Grupa: Zarejestrowani
Postów: 642
Pomógł: 2
Dołączył: 9.03.2006

Ostrzeżenie: (30%)
XX---


Cytat(Turson @ 13.08.2014, 12:33:02 ) *
Skoro używasz mysqli_ to po co NAMES ustawiasz w mysql_ ...?
http://php.net//manual/pl/mysqli.set-charset.php



Zrobiłem zmianę tego charsetu w mysqli ale nadal nie działa. Obecnie po prostu nic nie jest dodawane do bazy.

  1. if (isset ($_POST['submit'])){
  2.  
  3.  
  4. header("Content-Type: text/html; charset=UTF-8");
  5.  
  6. // Check connection
  7. if (mysqli_connect_errno()) {
  8. echo "Failed to connect to MySQL: " . mysqli_connect_error();
  9. }
  10.  
  11. /* change character set to utf8 */
  12. if (!$mysqli->set_charset("utf8")) {
  13. printf("Error loading character set utf8: %s\n", $mysqli->error);
  14. }
  15.  
  16.  
  17. // escape variables for security
  18. $nowyopis = mysqli_real_escape_string($con, $_POST['nowy_opis']);
  19. $idfilmu = mysqli_real_escape_string($con, $_POST['id_filmu']);
  20.  
  21.  
  22. $sql="UPDATE pozycje SET opisfilmu='$nowyopis' WHERE id='$idfilmu'";
  23.  
  24. if (!mysqli_query($con,$sql)) {
  25. die('Error: ' . mysqli_error($con));
  26. }
  27.  
  28.  
  29. mysqli_close($con);
  30.  
  31. //odświeżenie strony
  32. print "<meta http-equiv=\"Refresh\" content=\"1\" />";
  33.  
  34. }


--------------------
filmy podobne do - wyszukiwarka podobnych filmów
motywacja do działania - Bądź Lepszy
Go to the top of the page
+Quote Post
Turson
post 13.08.2014, 12:42:11
Post #4





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


Odróżniaj mysqli_set_charset od $mysqli->ser_charset
Nie dodaje i pewnie jest biała strona bo używasz obiektu $mysqli który nie istnieje a masz wylaczone raportowanie bledow.
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: 26.04.2024 - 04:09