| 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: 19 let
|
|||
0