Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Brak polskich znaków w bazie danych MySQL (phpmyadmin)
sauber94
post 12.03.2020, 14:22:56
Post #1





Grupa: Zarejestrowani
Postów: 55
Pomógł: 0
Dołączył: 22.05.2015

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


Cześć.

Posiadam projekt napisany w PHP. Mając go lokalnie na komputerze (XAMPP) wszystko jest w porządku, w bazie wszystkie frazy są poprawnie wyświetlane, są polskie znaki. Natomiast gdy wrzuciłem projekt na serwer (CentOS) zaczyna się problem, w bazie ukazują się krzaki, brak polskich znaków.

Poniżej zamieszczam kod, którym łącze się z bazą:
  1. <?php
  2.  
  3. class ConnectionDatabase
  4. {
  5. public function connect()
  6. {
  7. $host = "xxx";
  8. $username = "xxx";
  9. $password = "xxx";
  10. $dbName = "xxx";
  11. try {
  12. $db = new PDO("mysql:host=$host;dbname=$dbName", $username, $password);
  13. $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  14. return $db;
  15. } catch (PDOException $e) {
  16. echo $e->getTraceAsString();
  17. print "Error: ".$e->getMessage();
  18. }
  19. }
  20. };


Na każdej podstronie projektu, w kodzie mam linię
  1. <meta charset="utf-8">

W phpmyadmin wszystkie tabele, metoda porównywania napisów ustawione na utf8_polish_ci.
Go to the top of the page
+Quote Post
viking
post 12.03.2020, 14:47:14
Post #2





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
Dołączył: 30.08.2006

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


A gdzie tu w tym kodzie masz ustawione SET NAMES?


--------------------
Go to the top of the page
+Quote Post
sauber94
post 13.03.2020, 09:30:39
Post #3





Grupa: Zarejestrowani
Postów: 55
Pomógł: 0
Dołączył: 22.05.2015

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


Pisząc wczoraj ten post troszkę poszukałem na ten temat. Dodałem linię:
  1. array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8");


Tak to powinno wyglądać jak poniżej?

  1. <?php
  2.  
  3. class ConnectionDatabase
  4. {
  5. public function connect()
  6. {
  7. $host = "xxx";
  8. $username = "xxx";
  9. $password = "xxx";
  10. $dbName = "xxx";
  11. try {
  12. $db = new PDO("mysql:host=$host;dbname=$dbName", $username, $password);
  13. $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  14. array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8");
  15. return $db;
  16. } catch (PDOException $e) {
  17. echo $e->getTraceAsString();
  18. print "Error: ".$e->getMessage();
  19. }
  20. }
  21. };


Go to the top of the page
+Quote Post
viking
post 13.03.2020, 09:48:13
Post #4





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
Dołączył: 30.08.2006

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


Chyba żartujesz. Pierwszy z brzegu link na hasło pdo utf8 https://stackoverflow.com/questions/4475548...coding/21373793


--------------------
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 - 09:13