Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Problem require_once + PDO
Moris299
post
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
trzczy
post
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
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 (IMG:style_emoticons/default/wink.gif)
pozdrawiam
Go to the top of the page
+Quote Post

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: 22.08.2025 - 15:24