Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP]Zapytanie PDO z polskimi znakami
castagir
post
Post #1





Grupa: Zarejestrowani
Postów: 146
Pomógł: 3
Dołączył: 28.10.2014

Ostrzeżenie: (10%)
X----


Witam

Ma problem z zapytaniem PDO, które chyba nie odczytuje polskich znaków. PDO Statement wygląda tak:

  1. try {
  2. $polaczenieBD = new PDO('mysql:host='.$nazwaSerweraBD.';dbname='.$nazwaBD, $uzytkownikBD, $hasloBD, array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'utf8'"));
  3. $polaczenieBD->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
  4. } catch (PDOExeption $e) {
  5. echo ($e->getMessage());
  6. }
  7.  
  8. $nazwaUzytkownika = 'gość';
  9.  
  10. $pytanie = $polaczenieBD->prepare("SELECT * FROM `endo_konta_uzytkownikow`
  11. WHERE nazwaUzytkownika=':param1'");
  12. $pytanie->bindValue(':param1', $nazwaUzytkownika);
  13. $pytanie->execute();



Baza danych jest zapisana w 'utf8_unicode_ci', próbowałem także w 'utf8_polish_ci'.

Wcześniej próbowałem rozwiązać ten problem za pomocą encji, lecz też to nic nie daje.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 11)
nospor
post
Post #2





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




A patrzyles czy ci to dziala w ogole na normalnych znakach?

nie: WHERE nazwaUzytkownika=':param1'");
a: WHERE nazwaUzytkownika=:param1");
Go to the top of the page
+Quote Post
castagir
post
Post #3





Grupa: Zarejestrowani
Postów: 146
Pomógł: 3
Dołączył: 28.10.2014

Ostrzeżenie: (10%)
X----


Też sprawdzałem.

Pamiętam, że wcześniej udało mi się tylko za pomocą encji otrzymać wynik, ale tylko wtedy jak w bazie były również zapisane encje. Więc pomyślałem, że lepiej byłoby zapisywać po prostu encje w bazie zamiast polskich znaków.

Wcześniej prosiłem o pomoc w jaki sposób można konwertować polskie znaki na encje, ale nie otrzymałem pomocy, więc teraz zadałem inaczej pytanie.
Tutaj dodam, że próbowałem to robić z funkcjami preg_replace i str_replace, lecz też nic
Go to the top of the page
+Quote Post
nospor
post
Post #4





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




1) Poprawiles blad ktory ci wskazalem?
2) Olej te encje... po to są bazy by tam bylo normalnie a nie encje
3) W bazie mają byc normalne polskie znaki. Jak wkladasz dane do bazy? Moze przy wkladaniu robisz to źle i temu ci nic nie dziala
Go to the top of the page
+Quote Post
castagir
post
Post #5





Grupa: Zarejestrowani
Postów: 146
Pomógł: 3
Dołączył: 28.10.2014

Ostrzeżenie: (10%)
X----


Za pomocą takiego skryptu to robię.

Samo PDOStatement jest takie samo jak podałem wcześniej.

  1. $pytanie = $polaczenieBD->prepare("INSERT INTO `".$przedrostekBD."konta_uzytkownikow` (
  2. `dataRejestracji`, `nazwaUzytkownika`,
  3. `hasloUzytkownika`, `emailUzytkownika`,
  4. `stopienUzytkownika`)
  5. VALUES (
  6. 'ND', 'gość', 'ND', 'ND', 'Gość')");
  7. $pytanie->execute();


Teraz jeszcze modyfikuję wszystko za pomocą MysQL Workbench w Windows 7 - nie wiem czy to ma coś do rzeczy.
Go to the top of the page
+Quote Post
nospor
post
Post #6





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




Dobra, niech ktoś inny się z tobą uzera, ktos komu nie bedzie przeszkadzać, że nie odpowiadasz na połowę jego pytan. Ja nie mam czasu by go tak marnować i co chwile powtarzać pytanie, ktore juz zadawalem.
Go to the top of the page
+Quote Post
castagir
post
Post #7





Grupa: Zarejestrowani
Postów: 146
Pomógł: 3
Dołączył: 28.10.2014

Ostrzeżenie: (10%)
X----


Człowieku, zrobiłem tak jak mówiłeś. Nic nie pomogło, bo gdyby tak było to już bym napisał, że sprawa rozwiązana.
Może gdyby moje posty nie były moderowane to by Twój czas nie był tak marnowany.
Go to the top of the page
+Quote Post
nospor
post
Post #8





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




Napisalem dwa posty odnosnie poprawki. Ani razu sie nie ustosunkowales do niej, wiec rownie dobrze mogles jej w ogole nie zrobic. Tego nie wiedzialem.

Cytat
Może gdyby moje posty nie były moderowane to by Twój czas nie był tak marnowany.
Jakbys nie obrazał ludzi bez żadnego powodu, to byś moderacji nie dostał. I z tego co widze to dobrze ze dostales, bo nadal potrzebujesz ochłoniecia.
Go to the top of the page
+Quote Post
Pyton_000
post
Post #9





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


Przepraszam że to napiszę.
@castagir czyżbyś nie dostał pomocy na konkurencyjnym forum? Już Ci foch przeszedł?

Naucz się w końcu pokory i odpowiadać na pytania. Tego uczą w szkole podstawowej. Ktoś zadaje pytanie a ktoś inny odpowiada. Więc zamiast lać wodę, smutki, i żale zacznij pisać konkretami i odpowiadać grzecznie jak starsi pytają.
Go to the top of the page
+Quote Post
castagir
post
Post #10





Grupa: Zarejestrowani
Postów: 146
Pomógł: 3
Dołączył: 28.10.2014

Ostrzeżenie: (10%)
X----


Wybuchłem wczoraj niepotrzebnie, bo wystarczająco dużo osób mi dopiekło i nie wytrzymałem jeszcze śmieszków kolejnych osób tutaj.

Wracając do tematu. Zrobiłem tak jak nospor prosił i nic. Mało tego. Gdy podstawiłem zamiast :param1 normalnie gość to jeszcze dodatkowo błąd mi wywaliło, więc apostrofy muszą być.

  1. $pytanie = $polaczenieBD->prepare("SELECT * FROM `endo_konta_uzytkownikow`
  2. WHERE nazwaUzytkownika=gość");
  3. $pytanie->execute();
Go to the top of the page
+Quote Post
nospor
post
Post #11





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




Cytat
Gdy podstawiłem zamiast :param1 normalnie gość to jeszcze dodatkowo błąd mi wywaliło, więc apostrofy muszą być.
Grunt to wyciagac "logiczne" wnioski....
Bindowanie to jest co innego niz wstawianie bezposrednio tekstu wiec
podaczas bindowania NIE MOZE byc apostrofów
Podczas wkladania normalnie tekstu MUSZĄ BYC apostrofy.
To są dwie różne rzeczy.
Go to the top of the page
+Quote Post
castagir
post
Post #12





Grupa: Zarejestrowani
Postów: 146
Pomógł: 3
Dołączył: 28.10.2014

Ostrzeżenie: (10%)
X----


Dobra znalazłem już odpowiedz w jakimś tutorialu.



Dzięki za uwagę i pomoc.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 09:42