Autor Zpráva
Agerion
Profil *
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
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 *
Skvele, toto reseni to opravdu vyresilo, veril jsem ze to bude v podstate trivialni.
A jeste nejak rada k druhemu problemu?
BetaCam
Profil
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 *
zadna zmena, ale mimo tridu mi podobna variace fungovala...
Docela me to zajima, protoze uz se s tim trapim celej den
BetaCam
Profil
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 *
bohuzel mi to nevypise zadnou chybu... vsechno probehne bez vypisu jakehokoliv erroru ci warningu
BetaCam
Profil
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
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.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0