każdy z nich ładuje 3 pliki:
//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 require_once('PHP/check.php'); //polaczenie z MySQL require_once('MySQL/connect.php'); //i na koniec PHP z funkcjami przetwarzającymi informacje o userze, między innymi sprawdza sesję czy sprawdza nazwę użytkownika 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"
<?php try { $dbh_main = new PDO('mysql:host=localhost;dbname=baza', 'xxx', 'yyy'); $dbh = new PDO('mysql:host=localhost;dbname=baza2', 'xxx', 'yyy'); } catch (PDOException $PDOerrorInfo) { echo('<br /><br /><center>Strona ma awarię, proszę spróbować później. <br /> Błąd: brak połączenia do głównej bazy danych'); }
(tak, tutaj są dwie różne bazy)
w pliku user_functions.php wywala się już na
$sth = $dbh->prepare("SELECT name FROM users");
<?php $sth = $dbh->prepare("SELECT email FROM users"); $sth->execute(); $result = $sth->fetch(PDO::FETCH_ASSOC);
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?