Pokaż wyniki od 1 do 9 z 9

Wątek: [MySQL] Diagnoza błędów

  1. #1
    Zarejestrowany
    Dołączył
    Dec 2009
    Posty
    17

    Domyślnie [MySQL] Diagnoza błędów

    Warto przy korzystaniu z MySQL korzystać z bardzo przydatnego polecenia
    Kod php:
    or die(); 
    Działa tak, że jeśli przy zapytaniu wystąpi błąd, to skrypt przerwie prace i np. wyświetli nam na ekranie tekst.
    Przykład:
    Jeśli nie nie połączyliśmy się z bazą, a chcemy wykonać zapytanie...
    Kod php:
    $zap = @mysql_query("SELECT * FROM USERS") or die('Blad w zapytaniu'); 

    Jeśli wystąpi jakiś błąd skrypt wyświetli na ekranie "Blad w zapytaniu", ale co nam to da? Wiemy tylko że błąd występuje, ale nie mamy pojęcia jak go rozwiązać...


    Z pomocą przychodzi
    Kod php:
    mysql_error(); 
    Przedstawia on nam gdzie występuję błąd i przedstawia jego treść, wystarczy go połączyć z "or die();" i dodać za zapytaniem.

    Przykład:
    Kod php:
    $zap = @mysql_query("SELECT * FROM users") or die(mysql_error()); 
    Jeśli nie jesteśmy połączeni z serwerem otrzymamy dokładny błąd, u mnie wygląda on tak:
    Access denied for user 'ODBC'@'localhost' (using password: NIE)
    Uwaga!! Jeśli korzystamy z or die, to stawiamy średnik na końcu polecenia!

    Poprawnie:
    $zap = @mysql_query("SELECT * FROM users") or die(mysql_error());

    Niepoprawnie:
    $zap = @mysql_query("SELECT * FROM users"); or die(mysql_error());

    Przykład z brakiem połączenia nie jest zbyt dobry, więc wykorzystamy inny:
    Mam baze danych SQL, mam tabelę 'firma', ale nie mam kolumny 'szyld' które wykorzystuję do WHERE.

    Kod php:
    <?php
    include_once('db.php');
    $zap mysql_query("SELECT * FROM firma WHERE szyld = lol"); 
    while (
    $sql mysql_fetch_array($zap)) {
        echo 
    $sql['szyld'];
    }
    ?>
    Otrzymamy błąd:
    Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\.... on line 4
    Za to jeśli wykorzystamy "or die" otrzymamy elegancką treść.
    Kod:
    Kod php:
    <?php
    include_once('db.php');
    $zap mysql_query("SELECT * FROM firma WHERE szyld = lol") or die(mysql_error());
    while (
    $sql mysql_fetch_array($zap) or die(mysql_error())) {
        echo 
    $sql['szyld'];
    }
    ?>
    Błąd:
    Nieznana kolumna 'szyld' w where clause
    No i teraz wiemy, że nie mamy kolumny 'szyld'...

    Mam nadzieję, że teraz będzie mniej problemów z błędami MySQL.
    Zapraszam do wytykania błędów .

  2. #2
    Grupa MmoCenter Awatar aris
    Dołączył
    Sep 2009
    Posty
    2,408

    Domyślnie

    tylko nie zapomnijcie, że w finalnej wersji zrobienie czegoś takiego to totalna porażka...

    użytkownik ma widzieć opisy błędów mysql? o nee

  3. #3
    Zarejestrowany
    Dołączył
    Mar 2008
    Posty
    374

    Domyślnie

    Nie, dzięki Od takich rzeczy mam bibliotekę

  4. #4
    Zasłużony Awatar karer
    Dołączył
    Apr 2008
    Posty
    2,554

    Domyślnie

    @up or die() jest wlasnie poleceniem biblioteki wbudowanej do php. Zacznijcie pisac z sensem jak juz cos chcecie skrytykowac.

  5. #5
    Zarejestrowany
    Dołączył
    Mar 2008
    Posty
    374

    Domyślnie

    Cytat Zamieszczone przez karer Zobacz posta
    @up or die() jest wlasnie poleceniem biblioteki wbudowanej do php. Zacznijcie pisac z sensem jak juz cos chcecie skrytykowac.
    Jeśli nie zrozumiałeś, o co mi chodzi to wyjaśniam - od takich rzeczy mam napisaną bibliotekę do obsługi bazy danych, która pozwala mi się skupiać na samym zapytaniu, a jeśli coś w nim będzie nie tak, to dokładnie sformułowany błąd sam mi wyskoczy.

    No ale zawsze można przy każdym zapytaniu bawić się w dodawanie tego, co można zautymatyzować - bezsensownego wysiłku nigdy za wiele, prawda?

    PS. A to pewnie można nazwać "elegancką treścią"?
    Kod:
    while ($sql = mysql_fetch_array($zap) or die(mysql_error())) {

  6. #6
    Zarejestrowany
    Dołączył
    Dec 2009
    Posty
    17

    Domyślnie

    tylko nie zapomnijcie, że w finalnej wersji zrobienie czegoś takiego to totalna porażka...
    A czy porażką nie jest, że na tym forum co 3 problem z MySQL to "o so chodzi w blendzie"? I co? Odpowiadasz im na to pytanie?
    użytkownik ma widzieć opisy błędów mysql? o nee
    Napisałem to, żeby ludzie używali tego przy tworzeniu kodu...
    Nie, dzięki Od takich rzeczy mam bibliotekę
    Od szczania mam kibel, a czasem chodzę w krzaki... nie wiesz o co mi chodzi? Taki sam poziom tekstu jak twój.

  7. #7
    Zarejestrowany
    Dołączył
    Dec 2009
    Posty
    17

    Domyślnie

    PS. A to pewnie można nazwać "elegancką treścią"?
    Mogłem dać przy samym SELECT, ale wolę, żeby wyrobili sobie zwyczaj dodawania tego do każdego zapytania...
    Jeśli nie zrozumiałeś, o co mi chodzi to wyjaśniam - od takich rzeczy mam napisaną bibliotekę do obsługi bazy danych, która pozwala mi się skupiać na samym zapytaniu
    To podziel się tym z 1k userów, internet będzie dzięki tobie lepszy...
    No ale zawsze można przy każdym zapytaniu bawić się w dodawanie tego, co można zautymatyzować
    Ale zawsze można grzyby kupić, zamiast iść po nie do lasu...

  8. #8
    Zarejestrowany
    Dołączył
    Mar 2008
    Posty
    374

    Domyślnie

    Cytat Zamieszczone przez FluiD Zobacz posta
    To podziel się tym z 1k userów, internet będzie dzięki tobie lepszy...
    Widzisz, ja już jakiś czas temu doszedłem do wniosku, że nie ma sensu się tutaj prezenować ze swoimi pomysłami na programowanie, bo ci, do których mogłoby to trafić, mają już swoje nawyki i sposób pracy. Jest też kilka osób, których nic przekona, że "białe jest białe, a czarne jest czarne" - cytując naszego byłego premiera.

    Cytat Zamieszczone przez FluiD Zobacz posta
    Ale zawsze można grzyby kupić, zamiast iść po nie do lasu...
    Sugerujesz, że warto ciągle wynajdywać koło na nowo? Może kiedyś do tego dojdziesz sam, ale liczy się wygoda, komfort i szybkość tworzenia przejrzystych aplikacji, a sposób, który przedstawiłeś nie sprzyja temu. Rozumiem, że jesteś właśnie na etapie odkrywania koła, prezentując sposób programowania rodem z PHP 4.x. Jeśli powiesz, że lubisz tak pisać - okej, nic mi do tego

    Cytat Zamieszczone przez FluiD Zobacz posta
    Od szczania mam kibel, a czasem chodzę w krzaki... nie wiesz o co mi chodzi? Taki sam poziom tekstu jak twój.
    Tak czy inaczej, takie wypowiedzi świadczą tylko i wyłącznie o Twoim poziomie

  9. #9
    Grupa MmoCenter Awatar aris
    Dołączył
    Sep 2009
    Posty
    2,408

    Domyślnie

    A czy porażką nie jest, że na tym forum co 3 problem z MySQL to "o so chodzi w blendzie"? I co? Odpowiadasz im na to pytanie?
    to jest jedna z największych porażek tego forum, a raczej ludzi, którzy nic o php i mysql nie wiedzą, a chcą coś pisać
    ale tego nie przeskoczysz, bo i tak tematów "o so kfa chosi" będzie na pęczki, bo ludzie nie zaglądają w archiwum, nie przeglądają starych postów, tylko pytają i liczną na odpowiedź


    Napisałem to, żeby ludzie używali tego przy tworzeniu kodu...
    a ja tylko dodałem, żeby w wersji finalnej to wywalili ;]
    Ostatnio edytowane przez aris ; 30-12-2009 o 18:45

Informacje o wątku

Użytkownicy przeglądający ten wątek

Aktualnie 1 użytkownik(ów) przegląda ten wątek. (0 zarejestrowany(ch) oraz 1 gości)

Podobne wątki

  1. Obsługa błędów w grach
    Przez JetAlone w dziale Problemy przy tworzeniu własnej gry
    Odpowiedzi: 3
    Ostatni post / autor: 01-09-2010, 22:09
  2. PDO wyłączenie wyświetlania błędów
    Przez wolny w dziale PHP / MySql
    Odpowiedzi: 1
    Ostatni post / autor: 18-02-2010, 14:42
  3. pomoc w naprawieniu błędów..
    Przez Pomylony w dziale Support Vallheru
    Odpowiedzi: 5
    Ostatni post / autor: 22-08-2009, 12:42
  4. [PHP]Rodzaje błędów
    Przez Vielta w dziale Poradniki
    Odpowiedzi: 7
    Ostatni post / autor: 21-07-2009, 17:46
  5. Xnova bez blędów
    Przez Mil0 w dziale Pytania dotyczące silnika Xnova
    Odpowiedzi: 3
    Ostatni post / autor: 24-05-2009, 11:05

Zakładki

Uprawnienia umieszczania postów

  • Nie możesz zakładać nowych tematów
  • Nie możesz pisać wiadomości
  • Nie możesz dodawać załączników
  • Nie możesz edytować swoich postów
  •