Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] Problem z polskimi znakami ;/
Forum PHP.pl > Forum > Przedszkole
raval
Witam,

mam problem z kodowaniem, otóż z poziomu PHP nie wysyła mi poslkich znaków do Bazy MySQL.

Tak wygląda ustawione kodowanie w php:

  1. mysql_connect("localhost", "root", "")or die("Nie można nawiązać połączenia z bazą"); //połączenie z bazą danych
  2. mysql_select_db("phones")or die("Wystąpił błąd podczas wybierania bazy danych");
  3.  
  4. mysql_query("SET NAMES utf8");
  5. mysql_query("SET CHARACTER SET utf8");
  6. mysql_query("SET collation_connection = utf8_polish_ci");
  7. ?>
  8.  
  9.  
  10. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  11. <html xmlns="http://www.w3.org/1999/xhtml">
  12.  
  13. <head>
  14. <meta content="pl" http-equiv="Content-Language" />
  15. <meta content="text/html; charset=UTF8" http-equiv="Content-Type" />
  16. <title>advisory system</title>
  17. <script type='text/javascript' src='jQuery.js'></script>
  18. <link rel="stylesheet" type="text/css" href="css/style.css"/>


a tak wygląda zapytanie Mysql:

  1. mysql_query("UPDATE `telefony` SET `Wyświetlacz` ='$Wyswietlacz'
  2.  
  3. WHERE `id`='$id' ");


Problem tkwi w tym, ze nawet dla literki 'ś' w zapytaniu `Wyświetlacz` widzi blad:

  1. #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '',`Wyświetlacz` at line 7


a także dla zmiennej '$Wyswietlacz', jezeli beda w niej znajdowaly sie polskie znaki, zapytanie nie wykona sie wywalajac powyzszy blad.


Prosze o pomoc jak dany problem mozna rozwiazac.
Aylard
Pole w tabeli z polskim znakiem? Zmień na wyswietlacz i zobacz czy skrypty PHP zapisujesz w UTF-8 o ile dane podajesz gotowe.
Rid
Zapisał Pan dokument w UTF-8 bez BOM np.w notepad++ lub innym edytorze tekstu?questionmark.gif
raval
Cytat(Rid @ 18.04.2011, 00:17:42 ) *
Zapisał Pan dokument w UTF-8 bez BOM np.w notepad++ lub innym edytorze tekstu?questionmark.gif

Tak, zapisalem i nic to nie daje, potrzeba czegos innego
gargamel
  1. <meta content="text/html; charset=UTF8" http-equiv="Content-Type" />
poprawnie powinno być:
  1. <meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />

W sumie średnie szanse żeby to było źródłem błędu, ale jeśli dane wysyłasz ze strony formularzem, to jakaś szansa jest...
raval
Nie, to nie to, juz zglupialem co moze byc zrodlem problemu ;/
gargamel
a w phpMyAdminie jak masz postawiane ?
raval
W phpmyadmin: utf8_polish_ci
gargamel
To jest metoda porównywania napisów.
Jaki masz System kodowania znaków dla MySQL? Jeśli tam jest UTF-8 to koniec moich pomysłów.
raval
jest Utf-8
markonix
A daj w echo zapytanie (zamiast wykonywać).
raval
yhym, wyszlo, ze nic nie ma, wpisalem wartosc 'Wyś', a zwraca nic'' :

  1. UPDATE `telefony` SET `Wyœwietlacz`=''


a powinno byc:

  1. UPDATE `telefony` SET `Wyświetlacz`='Wyś'
ToAr
wygląda na to, że skrypt nie jest zapisany w utf-8 skoro nie wyświetliły się polskie znaki po wywołaniu 'echo'
raval
A mogle lizyc na podpowiedz jak to zrobic, bo juz siedze nad tym troche i musze przyznac, ze nei wiem ;/
w pierwszym posciem przedstawilem ustawienia dla kodowania, widocznie czegos ejszcze brakuje
ToAr
wrzuć gdzieś spakowany ten skrypt, a sprawdzę,

choć dobrą praktyką jest nieużywanie polskich znaków jeśli chodzi o strukturę tabel w bazie danych.
markonix
Jeśli nic Ci się nie wyświetla to ta zmienna nie ma wartości...
Na razie odeszliśmy w ogóle od mysql, masz gdzieś wcześniej widocznie źle.
raval
Dane z polskimi znakami przesyla prawidlowo z formularza, nie wysyla jedynie polskich znakow do bazy danych,

tutaj zamieszczam caly plik php, jest tam chaos, ale moze ktos z was sie dopatrzy bledu:
ToAr
jak plik masz zakodowany w ANSI to się nie dziw, że nie działa...

poprawny plik
http://www.speedyshare.com/files/28026653/dodaj.php
raval
Przepraszam moj blad, mialem wczesniej zapisany plik z kodowaniem utf8 bez BOM, ale zle wyslalem na forum, bo troche kombinowalem.

Mimo tego, po daniu echo przez zapytanem wyskakuje mi takie kodowanie znaczkow, ale juz jestesmy blisko :

  1. UPDATE `telefony` SET `Model` ='śśś ćććć', `Standard GSM` ='śśś ćććć', `WyĹ&#155;wietlacz` ='śśś ćććć', `Pamięć` ='śśś ćććć', `Procesor` ='śśś ćććć', `USB` ='śśś ćććć', `Lampa bĹ‚yskowa` ='śśś ćććć', `Cena` ='1090' WHERE `id`='17'
ToAr
w strukturze tabeli w nazwach kolumn nie używaj polskich znaków

pozamieniaj "Wyświetlacz" na "Wyswietlacz" itp.

zamiast spacji dobrze używać "_"
matino
Polskie znaki w nazwach zmiennych i kolumnach to bardzo zła praktyka, za którą jesteś teraz karany.
Pozmieniaj wszystkie kolumny na bez polskich znaków i popraw kod.
raval
tak wiem, tylko chcialem te polskie znaki miec specjalnie w bazie danych, bo nazwy kolumn bede wykorzystywal do wyswietlania na stronce, myslaem, ze jest jakis sposob by temu zaradzic ;/
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.