Autor | Zpráva | ||
---|---|---|---|
8vm8 Profil |
#1 · Zasláno: 12. 6. 2013, 19:19:07
Ahoj,
mám tyto skripty. soubor: database_functions.php <?php class databaseFunctions extends variables { public function connectToDatabase() { $db=new PDO("mysql:host=$this->dbHost;dbname=$this->dbName;", $this->dbUsername, $this->dbPassword); $db->exec("set names utf8"); $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } } ?> <?php class logInOut extends databaseFunctions { public function logIn($username,$password) { $stmt=$db->query("SELECT * FROM `database`.`tabulka` WHERE `username`='$username' and `password`='$password'"); $r=$stmt->rowCount(); if($r==1) { header ('Location: soubor.php'); } else { echo 'Přihlášení se nezdařilo. Zkontrolujte si prosím vložené údaje")'; } } } ?> Oba tyto soubory jsou načteny v jedné stránce. Nevím, jak mám zavolat funkci connectToDatabase() tak, aby mi proběhlo připojení a promměnná $db správně fungovala ve funkci logIn(). Vždy mi vyskočí hláška: Notice: Undefined variable: db in C:\server\www\web\main_functions.php on line 6 Fatal error: Call to a member function query() on a non-object in C:\server\www\web\main_functions.php on line 6 Pokud ale napíšu připojení hned do logIn, tak mi skript funguje správně. Já bych to ale chtěl mít uložený v té funkci connectToDatabase(), protože připojování k databázi se bude používat často. Bohužel ale nevím, jak na to. <?php class logInOut extends databaseFunctions { public function logIn($username,$password) { $db=new PDO("mysql:host=$this->dbHost;dbname=$this->dbName;", $this->dbUsername, $this->dbPassword); $db->exec("set names utf8"); $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $stmt=$db->query("SELECT * FROM `database`.`tabulka` WHERE `username`='$username' and `password`='$password'"); $r=$stmt->rowCount(); if($r==1) { header ('Location: soubor.php'); } else { echo 'Přihlášení se nezdařilo. Zkontrolujte si prosím vložené údaje")'; } } } ?> Mohl byste mi někdo říct, jak mám ty funkce volat? Vím, že se to dělá pomocí parent:: nebo self:: ale ani jedno mi nefungovalo a psalo to pořád ten samej error, |
||
tiso Profil |
#2 · Zasláno: 12. 6. 2013, 21:08:13
Takto ti to bude fungovať:
<?php class databaseFunctions extends variables { protected $db = NULL; public function connectToDatabase() { $this->db=new PDO("mysql:host=$this->dbHost;dbname=$this->dbName;", $this->dbUsername, $this->dbPassword); $this->db->exec("set names utf8"); $this->db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } } ?> <?php class logInOut extends databaseFunctions { public function logIn($username,$password) { $stmt=$this->db->query("SELECT * FROM `database`.`tabulka` WHERE `username`='$username' and `password`='$password'"); $r=$stmt->rowCount(); if($r==1) { header ('Location: soubor.php'); } else { echo 'Přihlášení se nezdařilo. Zkontrolujte si prosím vložené údaje")'; } } } ?> Ale dedičnosť (a extends b) nie je najlepší spôsob ako toto riešiť. |
||
Časová prodleva: 11 let
|
0