Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP]jeśli rekord zawiera polskie znaki w wyniku wyświetla "null"
@rtur
post 26.09.2012, 05:52:27
Post #1





Grupa: Zarejestrowani
Postów: 254
Pomógł: 3
Dołączył: 23.02.2006

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


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

Ten post edytował @rtur 26.09.2012, 05:55:35


--------------------
Artur
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
nospor
post 26.09.2012, 06:37:55
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
--@rtur--
post 26.09.2012, 11:03:52
Post #3





Goście







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.
Go to the top of the page
+Quote Post
--@rtur--
post 26.09.2012, 11:13:26
Post #4





Goście







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?
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: 14.08.2025 - 14:53