Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

[TuT]Metody szukania błędu


bnmbb

Rekomendowane odpowiedzi

Opublikowano

Podczas tworzenia napotykamy się na wiele błędów i problemów ,których nie wiemy jak rozwiązać. Postaram się w tym temacie poopisywać je :)

Podstawowy - "Nie wykonuje mi zapytania" :

 

 

Sytuacja prosta i banalna :)

Załóżmy ,że mamy taki kod (+/-):

mysql_query("UPDATE Users SET Name='Name' WHERE cos=$zmienna");

W tym wypadku należy wyświetlić to zapytanie w ten sposób :

mysql_query("UPDATE Users SET Name='Name' WHERE cos=$zmienna");
echo "UPDATE Users SET Name='Name' WHERE cos=$zmienna";

Jeśli wyświetlone zapytanie wygląda poprawnie należy je wywołać przez PHPMyAdmin (zakładka SQL) - Napisze on nam o co dokładnie chodzi.

Jeśli zapytanie zostało wykonane pomyślnie należy sprawdzić połączenie MySQL (nawet jeśli nie ma błędu połączenia)

Załóżmy ,że mamy taki kod :

mysql_connect('host','login','pass');
mysql_select_db('baza');

Zamieniamy go na :

$link = mysql_connect('host','login','pass');
$baza = mysql_select_db('baza');
if(!$link) { echo 'Nie można połączyć się z serwerem MySQL'; exit; }
if(!$baza { echo 'Nie można wybrać bazy'; exit; }

Po zamienieniu na taki kod nie powinno być problemu z znalezieniem... problemu :P

 

 

 

Parse error: syntax error, unexpected T_JakaśFunkcjaPHP in Jakas/sciezka/test.php on line 3

 

 

Błąd dosyć prosty w naprawie. Oznacza on ,że nie spodziewało się funkcji (w tym przypadku JakaśFunkcjaPHP). Spójrzmy na kod pliku gdzie jest błąd :

<?php
$zmienna = 'Jakas'
echo $zmienna;
?>

Na 3 linijce mamy echo. No ale zapis echo jest jak najbardziej poprawny. Spoglądamy na 2 linijkę - no fakt nie daliśmy ; na końcu lini :)

 

 

Parse error: syntax error, unexpected $end in sciezka/test.php on line 5

 

 

Jest to inaczej błąd ,który mówi ,że nie spodziewał się końca skryptu ( ?> ) na 5 lini (Koniec pliku). W tym przypadku należy sprawdzić czy nawiasy klamrowe są domknięte. Przykład kodu w jakim jest ten błąd :

<?php
if (1==1) {
$zmienna = 'Jakas';
echo $zmienna;
?>

 

 

Warning: xxxx() [function.xxxx]: A link to the server could not be established in ścieżka/test.php on line 3

 

 

Błąd ten oznacza ,że nie można nawiązać połączenia do MySQL. Należy sprawdzić czy logujemy się poprawnie (poprawny login i hasło). Jeśli wszystko jest OK to oznacza ,że błąd leży po stronie MySQL (nie działający serwer/problemy serwera)

 

 

Fatal error: Can't use function return value in write context in ścieżka/write.php on line x

Jest to najdziwniejszy typ błędu z jakim się spotkałem. Polega on na tym ,że zwraca wartość ,ale nie ma do czego (nie może zwrócić do zmiennej). Taki błąd może wystąpić w takiej linijce :

if(empty(trim($Content)) $error .= 'Wpisz treść postu.<br>';

ponieważ trim zwraca nam tekst ,ale z usuniętymi spacjami ,a nie ma do czego. Dobrze napisany kod byłby wtedy taki :

$ContentTrim = trim($Content);
if(empty($ContentTrim) $error .= 'Wpisz treść postu.<br>';

Przydatne "kombinacje" :

 

 

echo print_r($zmienna); - wyświetli nam zawartość zmiennej (w tym możliwość wyświetlenia całej tablicy)

 

 

Parse error: syntax error, unexpected T_VARIABLE in ścieżka/write.php on line 37

 

 

Występuje jeśli nie oczekiwało zmiennej (nie dokończony nawias, niezaznaczony koniec zmiennej

 

 

Jeśli wyskakuje nam błąd tam gdzie go na 1000% nie ma możemy uciszyć chama ( :D) dając do niego małpę ( @)

Przykład :

$liczba = @mysql_connect('brak hosta','brak loginu','brak hasła');

 

Narazie tyle :). Będę na bieżąco aktualizował.

Opublikowano

ja się przyczepie do jednej rzeczy a mianowicie po co dawać w 1 spojlerze ify?? 'lepsza*' motoda jest or die();

Oczywiscie lajk

* - Lepsza, chodziło mi że bez kombinowania wszystko wyświetli .

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...