Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> PHP PDO w innych plikach.
Utilaft
post
Post #1





Grupa: Zarejestrowani
Postów: 39
Pomógł: 0
Dołączył: 19.01.2013

Ostrzeżenie: (10%)
X----


Witam.

W indexie includuję sobie config, a w configu mam takie cośik;

  1. $hostdb = 'localhost';
  2. $namedb = 'uti';
  3. $userdb = 'uti';
  4. $passdb = '********';
  5.  
  6.  
  7. try {
  8. $db = new PDO("mysql:host=$hostdb; dbname=$namedb", $userdb, $passdb);
  9. }
  10. catch(PDOException $e) {
  11. echo 'Wystąpił błąd w połączeniu: ' . $e->getMessage();
  12. }
  13.  


problem w tym, że jak chcę w innym pliku zrobić zapytanie ($lala = exec("INSERT INTO users SET login = '$login', password = '$password', email = '$email', date = now()")wink.gif

to po prostu nie widzi mi zmiennej $db z config.

Jak mogę to sensownie rozwiązać?

Pozdrawiam ; ))
Powód edycji: [Spawnm]:
Go to the top of the page
+Quote Post
q3trm
post
Post #2





Grupa: Zarejestrowani
Postów: 83
Pomógł: 1
Dołączył: 26.02.2013

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


Dopiero zaczynam z PDO i z tego co się orientuję, to poza blokiem try{} nie istnieję instancja PDO. Rozwiązaniem jest - wykonywanie poleceń w pliku z PDO i przekazywanie wyników do własnej klasy w końcu PDO ma świetnie przystosowane do tego metody.

Ten post edytował q3trm 17.03.2013, 21:10:34
Go to the top of the page
+Quote Post
Fifi209
post
Post #3





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

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


Pod:
  1. $db = new PDO("mysql:host=$hostdb; dbname=$namedb", $userdb, $passdb);


Dodaj:
  1. return $db;


Powinno śmigać


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
Crozin
post
Post #4





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


@q3trm: W PHP blok try..catch nie wpływa na widoczność/zasięg zmiennych.
@Utilaft: Pokaż przykład (najlepiej SSCCE) z dwoma plikami i występowaniem błędu.
Go to the top of the page
+Quote Post
Utilaft
post
Post #5





Grupa: Zarejestrowani
Postów: 39
Pomógł: 0
Dołączył: 19.01.2013

Ostrzeżenie: (10%)
X----


No variable bla.. że nie znaleziono zmiennej, jeśli poproszę o wyświetlenie $db w innym pliku.

Notice: Undefined variable: db in E:\xampp\htdocs\class\UserManager.class.php on line 38

Fatal error: Call to a member function query() on a non-object in E:\xampp\htdocs\class\UserManager.class.php on line 38



@up, po dodaniu returna, takie cosik:

Warning: include_once(MainPage.class.php): failed to open stream: No such file or directory in E:\xampp\htdocs\config.php on line 31

Warning: include_once(): Failed opening 'MainPage.class.php' for inclusion (include_path='.;E:\xampp\php\PEAR') in E:\xampp\htdocs\config.php on line 31

Fatal error: Class 'MainPage' not found in E:\xampp\htdocs\index.php on line 10


Załączam plik config.php, MainPage.class.php, UserManager.class.php


http://wklej.to/H53Ht




Go to the top of the page
+Quote Post
dzastin
post
Post #6





Grupa: Zarejestrowani
Postów: 29
Pomógł: 2
Dołączył: 27.02.2013

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


Skoro już piszesz obiektowo, to zrób klasę bazy jako singleton, coś w stylu (pisane z palca bez ide):

  1. class db{
  2.  
  3. protected static $instance;
  4.  
  5. protected function __construct(){
  6.  
  7. }
  8.  
  9. public function getInstance(){
  10. if(self::$instance === null){
  11. self::$instance = new pdo();
  12. }
  13. return self::$instance
  14. }
  15.  
  16. }


a potem to już wszędzie

  1. db::getInstance()->query();
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 Aktualny czas: 21.08.2025 - 00:37