Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP]PHP nie widzi zmiennych, Dziwny błąd, który pojawia się przy stosowaniu PHP > 5.4.
Syaoran i Sakura
post
Post #1





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 11.11.2013

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


Ohayo!

Od jakiegoś czasu piszę programy w PHP. Skrypt, który przedstawiam poniżej działał prawidłowo w XAMPP-ie 1.73 (zapewne tam było PHP w wersji niższej niż 5.4). Gdy przeszedłem na XAMPP-a 1.82 (gdzie króluje PHP 5.4) przeglądarka wyrzuca mnóstwo błędów przy wczytywaniu pliku file02.php, których wcześniej nie było. Nie chodzi mi o to aby się pozbyć komunikatów lecz o to by skrypt działał prawidłowo.

Plik cat01/config.php:
  1. <?php
  2. $serwer="localhost";
  3. $user="root";
  4. $pass="";
  5. $baza="baza01";
  6. ?>


Plik cat01/function.php:
  1. <?php
  2. require("config.php");
  3. define("serwer",$serwer);
  4. define("user",$user);
  5. define("pass",$pass);
  6. define("baza",$baza);
  7. function polacz()
  8. {
  9. global $mysqli;
  10. $mysqli=new mysqli(serwer,user,pass,baza);
  11. $mysqli2=$mysqli->errno;
  12. if ($mysqli2 === NULL){return "zero";}
  13. if ($mysqli2 === 0){return "gut";}
  14. if ($mysqli2 !=0){return "pudlo";}
  15. }
  16. ?>

W pliku function.php docelowo mają się też znaleźć inne funkcje zależne od funkcji połącz. Funkcję tę stworzyłem po to by za każdym razem nei sprawdzać czy udało się połączenie z bazą danych i nie pisać komunikatów błędów na Ekranie.

Plik file02.php
  1. <?php
  2. require("cat01/function.php");
  3. $test01=polacz();
  4. //Zapytania
  5. if ($test01 != "gut")
  6. {echo "Nie udało się połączyć z bazą danych...";}
  7. if ($test01 == "gut")
  8. {
  9. $query="SELECT * FROM drzewo limit 2";
  10. $result=$mysqli->query($query,MYSQLI_STORE_RESULT);
  11. $result2=$result->num_rows;
  12. if ($result2 == 0)
  13. {echo "Nie udało się...";
  14. $mysqli->close();}
  15. if ($result2 >=1)
  16. {echo "Zwrócono rekordy...";}
  17. //Tutaj później pojawią się instrukcje do obróbki rekordów
  18. }
  19. ?>

CODE

Notice: Undefined variable: serwer in C:\xampp\htdocs\puppe\cat01\function.php on line 3

Notice: Undefined variable: user in C:\xampp\htdocs\puppe\cat01\function.php on line 4

Notice: Undefined variable: pass in C:\xampp\htdocs\puppe\cat01\function.php on line 5

Notice: Undefined variable: baza in C:\xampp\htdocs\puppe\cat01\function.php on line 6

Notice: Trying to get property of non-object in C:\xampp\htdocs\puppe\file02.php on line 9
Nie udało się..
.

Tak wygląda wynik wykonania skryptu file02.php. Wcześniej było wszystko jak trzeba. W wersji 5.3 PHP miałem wyłączone register_globals i działało. Teraz jak gdyby serwer dostał grzyba i nie łączy się z bazą danych (dane do bazy są podane prawidłowo. w tabeli drzewo znajdują się przykładowe wartości). Nie wiem gdzie jest błąd. Poza tym zależy mi na tym aby wyrzucało błędy w przypadku niepowodzenia połączenia się z bazą danych, zwłaszcza że serwery MySQL są zawodne i czasami nie udaje się nawiązać z nimi połączenia gdy np. są przeciążone.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
com
post
Post #2





Grupa: Zarejestrowani
Postów: 3 034
Pomógł: 366
Dołączył: 24.05.2012

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


Po pierwsze definiuj STAŁE wiekimi literami...
Go to the top of the page
+Quote Post
Syaoran i Sakura
post
Post #3





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 11.11.2013

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


Cytat(com @ 11.11.2013, 21:01:29 ) *
Po pierwsze definiuj STAŁE wiekimi literami...

To nic nie zmieniło...
Zauważyłem również, że gdy w pliku function.php, zaraz po wypisaniu require("config.php") dodam następujące frazy

  1. global $serwer;
  2. global $user;
  3. global $pass;
  4. global $baza;


To znikają pierwsze cztery komunikaty notice. Nie rozumiem jednak, dlaczego muszę dodawać global, skoro używam zmiennych z pliku i to w głównym skrypcie. Gdyby to była funkcja, to co innego. Podejrzewam, że parser PHP coś źle działa. Na wcześniejszej wersji Xamppa 1.73 z PHP 5.3 wszystko chodziło jak trzeba.

Początkowo przypuszczałem, że pisane w PHP aplikacje będą kompatybilne z różnymi wersjami PHP, chyba że znajdą się w nich przestarzałe funkcję (takowych chyba u mnie nie ma). Teraz jednak widzę, że napisanie działającej aplikacji jest grą w ciemno, co mnie znacznie zniechęca do dalszego poznawania PHP.

Jeszcze jedna uwaga: Skrypt działa prawidłowo na hostingu cba.pl, ugu.pl bez względu na to czy ustawię PHP w wersji 5.4 czy 5.3 czy 5.2. U mnie obecna jest wersja PHP 5.4.19, zaś środowisko Apache mam w wersji 2.4.4 i są kłopoty. Serwery internetowe zapewne coś w sobie mają skoro łykają moje skrypty bez żadnych ale. Przyznam również, że nie zostały postawione przez Czarodziejkę Tecne z klubu Winx. Chcę mieć na localhoście taką samą sytuację. Włączałem i wyłączałem różne dyrektywy w pliku PHP Ini lecz problem nie ustąpił.

Ten post edytował Syaoran i Sakura 12.11.2013, 00:22:59
Go to the top of the page
+Quote Post

Posty w temacie


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: 5.10.2025 - 03:25