Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]jeśli rekord zawiera polskie znaki w wyniku wyświetla "null"
Forum PHP.pl > Forum > Przedszkole
@rtur
Mam taki kod którym pobieram dane z bazy i wrzucam w json_encode
  1. try {
  2. $conn = new PDO("mysql:host=$dbhost;dbname=$dbname", $dbuser, $dbpass);
  3. }
  4. catch(PDOException $e) {
  5. echo $e->getMessage();
  6. }
  7.  
  8. $return_arr = array();
  9.  
  10. if ($conn)
  11. {
  12. $ac_term = "%".$_GET['term']."%";
  13. $query = "SELECT * FROM utwory where tytul like :term";
  14. $result = $conn->prepare($query);
  15. $result->bindValue(":term",$ac_term);
  16. $result->execute();
  17.  
  18. /* Retrieve and store in array the results of the query.*/
  19. while ($row = $result->fetch(PDO::FETCH_ASSOC)) {
  20. $row_array['id'] = $row['uid'];
  21. $row_array['value'] = $row['tytul'];
  22.  
  23. array_push($return_arr,$row_array);
  24. }
  25. }
  26. /* Free connection resources. */
  27. $conn = null;
  28. /* Toss back results as json encoded array. */
  29. echo json_encode($return_arr);

niestety nie mam pojęcia czemu jak jest polski znak w rekordzie to cały rekord jest wyświetlany jako "null"
przykładowo uid=299; tytul=Trędowata marionetka; zwraca:
  1. {"id":"299","value":null}

nie wiem czemu tak się dzieje i jak to naprawić, kodowanie bazy utf8_polish_ci, pliku utf-8 bez bom
nospor
json_encode nie działa, gdy znaki są w kodowaniu innym niż utf8. Sprawdź więc dokładnie w jakim kodowaniu masz znaki w pole VALUE
-@rtur-
Nie wiem jak będzie na serwerze ale w pracy na localhoście zadziałało dodanie:
  1. $options = array(
  2. PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8',
  3. );
  4.  
  5. $conn = new PDO("mysql:host=$dbhost;dbname=$dbname", $dbuser, $dbpass, $options);
,

w wynikowym pliku ajax.utwory.php pokazuje wprawdzie w miejsce pl znaków jakieś symbole z \ ale już funkcja autocomplete z jquery wyświetla oki dane smile.gif

jeszcze mam tylko pytanie bo w bazie mam pozamieniane " ' " na ' i w polu autocomplete które pobiera dane do inputa wstawiane są w w formie "I'm Gonna Dance" zamiast "I'm Gonna Dance" jak to poprawić ? Zależy mi na tym aby w bazie było bez zmian.

przepraszam że pisze jako gość ale tu nie mam zapisanego hasła do konta w pracy smile.gif

cały skrypt to przeróbka tego polegająca na dostosowaniu do moich potrzeb.
-@rtur-
widzę że zjadło wszystkie symbole i zamieniło je na odpowiednie znaki w poście, a wiec:
  1. '
jest w inpucie i w bazie, a ja bym chciał w bazie zostawić
  1. '
a na stronie w input autocomplete
  1. '

do głowy przychodzi mi teraz tylko zastosowanie str_replace() przed wysłaniem do formularza, czy jest inny sposób lepszy?
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.