Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Problem require_once + PDO
Moris299
post 1.01.2018, 14:25:58
Post #1





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 19.11.2012
Skąd: Bydgoszcz

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


Mam główny plik strony np. index.php, view.php, map.php itp.
każdy z nich ładuje 3 pliki:

  1. //plik sprawdzający informacje ogólne o kliencie(przeglądarka, ip, mobile czy desktop itp) oraz sprawdzający czy na serwerze nie ma przerwy technicznej
  2. require_once('PHP/check.php');
  3.  
  4. //polaczenie z MySQL
  5. require_once('MySQL/connect.php');
  6.  
  7. //i na koniec PHP z funkcjami przetwarzającymi informacje o userze, między innymi sprawdza sesję czy sprawdza nazwę użytkownika
  8. require_once('MySQL/user_functions.php');



i problem jest taki, że w user_functions.php wyskakuje błąd
Fatal error: Uncaught Error: Call to a member function prepare() on null in /home/jail/moris299/home/xxx/domains/yyy/public_html/MySQL/user_functions.php:2


zawartość plików:

"MySQL/connect.php"
  1. <?php
  2. try {
  3. $dbh_main = new PDO('mysql:host=localhost;dbname=baza', 'xxx', 'yyy');
  4. $dbh = new PDO('mysql:host=localhost;dbname=baza2', 'xxx', 'yyy');
  5. } catch (PDOException $PDOerrorInfo) {
  6. echo('<br /><br /><center>Strona ma awarię, proszę spróbować później. <br /> Błąd: brak połączenia do głównej bazy danych');
  7. }

(tak, tutaj są dwie różne bazy)

w pliku user_functions.php wywala się już na
$sth = $dbh->prepare("SELECT name FROM users");

  1. <?php
  2. $sth = $dbh->prepare("SELECT email FROM users");
  3. $sth->execute();
  4.  
  5. $result = $sth->fetch(PDO::FETCH_ASSOC);
  6. print_r($result);



Problem znika po dodaniu do user_functions.php
$dbh = new PDO('mysql:host=localhost;dbname=baza2', 'xxx', 'yyy');
czyli problem jest w tym, że handler i funkcje związane z bazą danych są w dwóch różnych plikach
dlaczego tak się dzieje? po wykonaniu connect.php i przejściu do user_functions.php interpreter "zapomina" objekty i zmienne (w tym obiekt PDO $dbh)?
Jak temu zapobiec?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
trzczy
post 1.01.2018, 14:38:32
Post #2





Grupa: Zarejestrowani
Postów: 460
Pomógł: 49
Dołączył: 5.06.2011

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


Wstaw te inkludowane pliki literalnie do jednego zbiorczego skryptu i prześledź linia po linii zmienną $dbh za pomocą var_dump. Lub sprawdź w którym momencie funkcja metoda prepare zaczyna się wywalać od momentu pierwszego przypisania wartości zmiennej $dbh.
Go to the top of the page
+Quote Post
Moris299
post 1.01.2018, 23:59:15
Post #3





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 19.11.2012
Skąd: Bydgoszcz

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


coś pogrzebałem w kodzie i zaczęło działać. Nawet nie wiem dokładnie co zmieniłem wink.gif
pozdrawiam
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 19.07.2025 - 12:58