[MySQL][PHP]Połączenie z MySQL w funkcji |
[MySQL][PHP]Połączenie z MySQL w funkcji |
3.08.2017, 19:14:53
Post
#1
|
|
Grupa: Zarejestrowani Postów: 12 Pomógł: 0 Dołączył: 5.03.2017 Ostrzeżenie: (0%) |
Witam.
Mam taki mały problem. Napisałem sobie takiego twora w pliku connect.php:
Następnie w pliku lista_kontrahentow.php wywołuję funkcję db_connect i tworzę funkcję wykonującą zapytanie:
W jeszcze osobnym pliku kontrahenci.php wywołuję funkcję wyświetl_kontrahentow:
W rezultacie dostaję alerty: Notice: Undefined variable: mysqli in C:\xampp\htdocs\test\subpages\lista_kontrahentow.php on line 8 Fatal error: Call to a member function query() on null in C:\xampp\htdocs\test\subpages\lista_kontrahentow.php on line 8 Jak w pliku connect.php wprowadzę jakieś niepoprawne dane do połączenia z bazą, to przy wywołaniu funkcji db_connect w innym pliku wywala alerty, więc działa blok try... catch. Domyślam się, że problem dotyczy zasięgu zmiennych w funkcjach. Próbowałem dopisać return $mysqli na koniec bloku try w funkcji db_connect, lecz nic mi to nie daje. Jak mam to naprawić? |
|
|
3.08.2017, 19:18:10
Post
#2
|
|
Grupa: Zarejestrowani Postów: 239 Pomógł: 32 Dołączył: 10.03.2004 Ostrzeżenie: (10%) |
nie zwracasz ani nieprzekazujesz zmiennej $mysqli
ona jest widoczna tylko w zakresie funkcji db_connect() a potem nie mam prawa jej nikt widzieć |
|
|
3.08.2017, 19:18:44
Post
#3
|
|
Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) |
$mysqli nie jest widoczne w funkcji, musisz ją przekazać jako parametr.
I to co wyżej kolega. Nie zwracasz $mysql spoza connect. Ten post edytował Pyton_000 3.08.2017, 19:19:19 |
|
|
3.08.2017, 19:27:58
Post
#4
|
|
Grupa: Zarejestrowani Postów: 12 Pomógł: 0 Dołączył: 5.03.2017 Ostrzeżenie: (0%) |
OK. Chyba już rozumiem.
Poprawiłem w ten sposób i błędów nie ma: connect.php
lista_kontrahentow.php
kontrahenci.php
|
|
|
4.08.2017, 05:16:22
Post
#5
|
|
Grupa: Zarejestrowani Postów: 6 365 Pomógł: 1114 Dołączył: 30.08.2006 Ostrzeżenie: (0%) |
Troszkę masz bez sensu wyswietl_kontrahentow bo jak już to powinno przyjmować gotowy obiekt mysqli a nie całą konfigurację bazy. A najlepiej tylko dane specyficzne czyli np jakieś warunki filtrowania.
-------------------- |
|
|
Wersja Lo-Fi | Aktualny czas: 29.03.2024 - 12:43 |