Autor | Zpráva | ||
---|---|---|---|
Agerion Profil * |
#1 · Zasláno: 10. 12. 2007, 14:10:15
Zdravim,
mam dva pravdepobone elementarni problemy s OOP a mysqli extension, nejak se mi nedari je vyresit tak se obracim a prosim o radu. 1)Nevim jak nacist promenne ze souboru aby byly hned prirazeny privatnim promnenym(mam na mysli udaje o mysql serveru atd) 2) Pokud priradim $objekt novou tridu mysqli tak nejsem schopen vypsat udaje z db vypisuje me to "Fatal error: Call to a member function fetch_assoc() on a non-object in /mnt/data/accounts/m/muty/data/www/main/base/_class.php on line 24" - co to znamena samozrejme zhruba vim, ale jak to udelat spravne to uz ani ne. Dekuji <?php class sqllayer { private $server; private $user; private $pass; private $db; private $objekt; function __construct() { require_once("config.php"); $this->objekt= new mysqli($server,$user,$pass,$db); } function showuser() { $result=$this->objekt->query("SELECT 'nick' FROM 'kb_login'"); while($row = $result->fetch_assoc()) { echo $row[nick]; } } function __destruct() { $this->objekt->close(); } } |
||
BetaCam Profil |
#2 · Zasláno: 10. 12. 2007, 14:53:35 · Upravil/a: BetaCam
Nevim jak nacist promenne ze souboru aby byly hned prirazeny privatnim promnenym(mam na mysli udaje o mysql serveru atd)
No to záleží jak si to chceš udělat čistě teoreticky by to mělo jít např takhle : config.php : $mysql['server'] = '127.0.0.1'; $mysql['user'] = 'root'; $mysql['pass'] = 'heslo'; $mysql['db'] = 'database'; a třída by potom mohla vypadat nějak takhle : <?php class sqllayer { private $server; private $user; private $pass; private $db; private $objekt; function __construct() { $this->_init(); $this->objekt= new mysqli($this->server,$this->user,$this->pass,$this->db); } private function _init() { require_once("config.php"); foreach ($mysql as $key => $val) { $this->$key = $val; } } function __destruct() { $this->objekt->close(); } } |
||
Agerion Profil * |
#3 · Zasláno: 10. 12. 2007, 15:22:20
Skvele, toto reseni to opravdu vyresilo, veril jsem ze to bude v podstate trivialni.
A jeste nejak rada k druhemu problemu? |
||
BetaCam Profil |
#4 · Zasláno: 10. 12. 2007, 15:29:47
No druhej problém je podle mě celkem taky jasnej. Sice si tim nejsem uplně jistej protože s mysqli nedělam nic méně bych si tipnul, že ti
$this->objekt->query("SELECT 'nick' FROM 'kb_login'"); nic nevrátí takže $result je ti pak k ničemu. Skus přepsat ten řádek na : $result = $this->objekt->query("SELECT nick FROM kb_login"); |
||
Agerion Profil * |
#5 · Zasláno: 10. 12. 2007, 15:55:25
zadna zmena, ale mimo tridu mi podobna variace fungovala...
Docela me to zajima, protoze uz se s tim trapim celej den |
||
BetaCam Profil |
#6 · Zasláno: 10. 12. 2007, 16:10:24 · Upravil/a: BetaCam
Proste tam budeš mít sekeru v SQL. Zakomentuj ten cykl a dej do te funkce showuser() jen tohle
$result = $this->objekt->query("SELECT 'nick' FROM 'kb_login'"); echo $this->objekt->error; a uvidis co ti to tam vypíše. |
||
Agerion Profil * |
#7 · Zasláno: 10. 12. 2007, 18:05:37
bohuzel mi to nevypise zadnou chybu... vsechno probehne bez vypisu jakehokoliv erroru ci warningu
|
||
BetaCam Profil |
#8 · Zasláno: 10. 12. 2007, 18:29:36
Tak to máš divný protože kdyz sem tu třídu pustil u sebe na serveru a navázal jí na svou tabulku v DB tak proběhla naprosto normálně a validně.
|
||
BetaCam Profil |
#9 · Zasláno: 10. 12. 2007, 18:33:37
Spust si to v nějakym IDE, ktery ma debugger, nasázej si tam breakpointy aspon uvidíš co se ti tam ve skutečnosti s těma proměnnejma děje.
|
||
Časová prodleva: 16 let
|
0