• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Kodowanie polskich znaków w zapytaniu SQL PHP

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
+1 głos
1,265 wizyt
pytanie zadane 17 stycznia 2016 w SQL, bazy danych przez andrzej151 Początkujący (300 p.)
edycja 17 stycznia 2016 przez Arkadiusz Waluk

Witam mam problem z kodowaniem polskich znaków wcześniej miałem takie łączenie się z bazą i wykonanie zapytania tylko że wtedy pojawiały się kszaki
 

$polaczenie = new mysqli($host, $db_user, $db_password, $db_name);
    
    if ($polaczenie->connect_errno!=0)
    {
        echo "Error: ".$polaczenie->connect_errno;
    }
    else
    {
        $los=rand(1,12);
        echo($los);
        $rezultat = $polaczenie->query("SELECT * FROM Npytania WHERE id='$los'");
        
            $wiersz = $rezultat->fetch_assoc();
            $_SESSION['pytanie']=$wiersz['pytanie'];
            echo($wiersz['pytanie']);
        
        
    }



szukałem odpowiedzi znalazłem że lepiej używać PDO napisałem taki kod tylko że nic się nie wyświetla i nie wiem gdzie jest cały problem.
 

$polaczenie = new PDO("mysql:host=$host;dbname=$db_name;charset=utf8", $db_user, $db_password,
                    [PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'utf8'"]);
    if ($polaczenie->connect_errno!=0)
    {
        echo "Error: ".$polaczenie->connect_errno;
    }
    else
    {
        $los=rand(1,12);
        echo($los);
        $rezultat = $polaczenie->query("SELECT * FROM Npytania WHERE id='$los'");
        
            $wiersz = $rezultat->fetchAll(PDO::FETCH_ASSOC);
            $_SESSION['pytanie']=$wiersz['pytanie'];
            echo($wiersz['pytanie']);
        
        
    }



wszystko się łączy wszystko jest niby ok błąd wydaje się byś na poziomie  zapytania query lub tej funkcji fetchAll(PDO::FETCH_ASSOC);

 

w pierwszym kodzie kszaki w drugim nic się nie dzieje i nie wiem dlaczego

1 odpowiedź

0 głosów
odpowiedź 17 stycznia 2016 przez Arkadiusz Waluk Ekspert (290,250 p.)
Co do kodu pierwszego kodu to może wystarczyłoby ustawić kodowanie i byłoby dobrze - http://php.net/manual/en/mysqli.set-charset.php

Fakt, PDO jest lepsze więc lepiej korzystać z niego. Masz włączone wyświetlanie błędów PHP? Bo pierwsze słyszę żeby w PDO istniało coś takiego jak connect_errno, błędy sprawdza się przez try...catch.

A i kod na forum umieszczamy w specjalnym bloczku do tego służącym.
komentarz 17 stycznia 2016 przez andrzej151 Początkujący (300 p.)

tak w 1 wystarczyło użyć 

$polaczenie->set_charset("utf8");

wielkie dzieki

a z tym PDO dopiero dziś się dowiedziałem że takie coś istnieje jak szukałem rozwiązania wiec chyba zrobiłem pełną mieszankę typów programowania mnał byś może jakieś poradniki które tłumacza to PDO jak dzała w jakiś przystępny aby nie powiedzieć łopatologiczny jak działają tu funkcje i jakie są dostępne funkcje 

komentarz 17 stycznia 2016 przez Arkadiusz Waluk Ekspert (290,250 p.)
Myślę że bardzo przystępnie jest to opisane tutaj https://pl.wikibooks.org/wiki/PHP/Biblioteka_PDO

Wszystkich funkcji na pewno tu nie ma i pewnie nigdzie oprócz manuala nie znajdziesz tak dokładnego opisu z wszystkimi funkcjami. Ale to co znajdziesz na Wikibooks z pewnością na razie Ci wystarczy.

Podobne pytania

0 głosów
1 odpowiedź 2,546 wizyt
pytanie zadane 20 kwietnia 2016 w SQL, bazy danych przez DCC_IT Początkujący (330 p.)
0 głosów
1 odpowiedź 845 wizyt
0 głosów
4 odpowiedzi 2,800 wizyt
pytanie zadane 14 lipca 2015 w SQL, bazy danych przez Jagoda__ Nowicjusz (150 p.)

93,436 zapytań

142,431 odpowiedzi

322,669 komentarzy

62,801 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

...