Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Brak polskich znaków, ale tylko w bazie
Forum PHP.pl > Forum > Przedszkole
Olsz4k
No właśnie, zacząłem się przesiadać na PDO i tutaj zaczął się mały problem, oto mój kod:

  1. <?php
  2. if (isset($_POST['dodaj']))
  3. {
  4. $stmt = $polacz -> prepare("INSERT INTO start (tytul,tekst) VALUES (:tytul, :tekst)");
  5. $stmt -> bindValue(':tytul', $_POST['tytul'], PDO::PARAM_STR);
  6. $stmt -> bindValue(':tekst', $_POST['tekst'], PDO::PARAM_STR);
  7. $stmt -> execute();
  8. if($stmt)
  9. {
  10. echo 'Tekst został dodany pomyślnie!';
  11. }
  12. else
  13. {
  14. echo 'Wystąpił błąd podczas dodawania tekstu! Spróbuj ponownie!';
  15. }
  16. }
  17. ?>


W PDO siedzę dopiero parę dni. Do bazy wszystkie dane dodaje, jednak polskie znaki krzaczkuje, mimo tego na stronie wyświetla je poprawnie, ale tak chyba nie powinno być? Kodowanie pliku to UTF-8 bez BOM, kodowanie w bazie to utf8_polish_ci.
Druga sprawa, to czy ten kod jest poprawny pod względem PDO?

EDIT:

Przy połączeniu z bazą kodowanie też ustawione:
  1. polacz = new PDO('mysql:host='.$host.';dbname='.$db.';encoding=utf8', $login, $password);
Turson
Ja używam takiego kodu i działa poprawnie:
  1. $polacz = new PDO('mysql:host=localhost;dbname=db', 'user', 'pass', array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'utf8'")) or die();


  1. $stmt -> execute();
  2. if($stmt)

To nie tak działa. Wykonujesz a potem sprawdzasz. Wykonuj sprawdzając
  1. $dodano = $stmt->execute();
  2. if($dodano)
Olsz4k
No i super, zmiana połączenia pomogła, dzięki wielkie!
I dzięki również za zwrócenie uwagi na błąd w kodzie smile.gif
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.