Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem require_once + PDO
Forum PHP.pl > Forum > PHP
Moris299
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?
trzczy
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.
Moris299
coś pogrzebałem w kodzie i zaczęło działać. Nawet nie wiem dokładnie co zmieniłem wink.gif
pozdrawiam
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.