[ Príspevkov: 7 ] 
AutorSpráva
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 07.04.12
Prihlásený: 12.04.12
Príspevky: 4
Témy: 1 | 1
NapísalOffline : 07.04.2012 16:46 | PHP OOP MYSQLi Class

Zdravim, som zaciatocnik v php oop. Chcel som si urobit vlastnu triedu pre ulahsenie prace s databazou. Nejde o nic super, len pre vlastne potreby. Hadze to chybu: Fatal error: Using $this when not in object context in C:\xampp\htdocs\db.class.php on line 50..Na 50 riadku mam
Kód:
if($this->type == 'mysqli'){
Bol by som rad, kebyze mi ukazete, kde robim chybu.

Kód:
<?php

Class DB{

   /**
   * @var object
   * Database connection
   */
   private static $connection = null;

   /**
   * @var String
   * Type of Database
   * Default MySQLi
   */
   private $type = 'mysqli';

   /**
   * @var String
   * SQL Query
   */
   private $query = '';

   private static $hostname = 'localhost';
   private static $username = 'root';
   private static $password = '';
   private static $dbname = 'fontilate';
   private static $port = 3306;

   public function __contruct(){
   
   }
   public static function getConnection(){
      if($this->type == 'mysqli'){

         $this->connection = new mysqli($this->hostname,$this->username,$this->password,$this->dbname,$this->port);
      }

      if(!$this->connection){
         echo $this->connection->connect_errno();
      }else{
         $this->connection->query('SET NAMES utf8');
         return $this->connection;
      }
   }

   /**
   * Quering SQL
   * @return result
   */

   public function sqlQuery($query){
      return $this->connection->query($query);
   }

   /**
   * Fetch Assoc
   * @var array
   */

   public function fetchAssoc($result,$type_assoc){
      switch($type_assoc){
         case 'ASSOC': $fetch = 'MYSQLI_ASSOC';
         case 'NUM': $fetch = 'MYSQLI_NUM';
      }
      $res = array();
      while($tmp = $result->fetch_array($fetch)){
         $res[] = $tmp;
      }

      return $res;
   }


   /**
   * SQL Select
   */

   public function select($select){
      $this->query = 'SELECT ' . $this->escape($select);
      return $this->query;
   }

   /**
   * SQL From
   */

   public function from($from){
      $this->query .= 'FROM ' . $this->escape($from);
      return $this->query;
   }

   /**
   * SQL Where
   */

   public function where($where){
      $this->query .= 'WHERE ' . $this->escape($where);
      return $this->query;
   }

   /**
   * SQL Limit
   */

   public function limit($limit){
      $this->query .= 'LIMIT ' . $this->escape($limit);
      return $this->query;
   }

   /**
   * Escape String - Prevent for SQL Injection
   */

   public function escape($string){
      if($this->type == 'mysqli'){
         return $this->connection->real_escape_string($string);
      }else{
         return addslashes($string);
      }
   }
}

$db = new DB();
$db->getConnection();
$result = $db->select('*')->from('users')->where('id = 10');
$fetch = $result->fetchAssoc('ASSOC');
foreach($fetch as $data){
   echo $data['name'];
}
?>


Offline

Čestný člen
Čestný člen
PHP OOP MYSQLi Class

Registrovaný: 11.08.07
Príspevky: 4088
Témy: 34 | 34
Bydlisko: Brno
NapísalOffline : 08.04.2012 11:36 | PHP OOP MYSQLi Class

Metoda getConnection je staticka, to znamena, ze ju nemozes volat nad konkretnou instanciou, nieco ako
Kód:
$obj = new DB();
$obj->getConnection();
by ti nepreslo. To volanie prebieha priamo nad triedou, zapisom
Kód:
DB::getConnection();
a tym padom $this straca vyznam, pretoze o konkretnu instanciu tam nejde a nemoze ist. Mozes pristupovat k (statickym) memberom onej triedy zapisom self::$var. Snad som to nepoplietol.


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 07.04.12
Prihlásený: 12.04.12
Príspevky: 4
Témy: 1 | 1
Napísal autor témyOffline : 08.04.2012 14:05 | PHP OOP MYSQLi Class

Dakujem za odpoved, ale stale tomu nechapem ako to mam vyriesit. Pomohol by si mi s tym?


Offline

Užívateľ
Užívateľ
PHP OOP MYSQLi Class

Registrovaný: 26.12.06
Prihlásený: 16.11.19
Príspevky: 3971
Témy: 181 | 181
Bydlisko: Nitra / Bra...
NapísalOffline : 08.04.2012 14:27 | PHP OOP MYSQLi Class

premennou $this pristupujes ku konkretnej instancii objektu a tvoja funkcia getConnection je staticka, polopate povedane, neviaze sa na ziadnu konkretnu instanciu ale je "vseobecna".

takze jedine, co potrebujes je odstranit slovicko "static"

// pridané po 2 minútach od posledného príspevku

tak isto aj z premennych


_________________
Sorry za prelkepy
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 07.04.12
Prihlásený: 12.04.12
Príspevky: 4
Témy: 1 | 1
Napísal autor témyOffline : 08.04.2012 14:41 | PHP OOP MYSQLi Class

emer: static som vymazal, ale stale ta ista chyba


Offline

Užívateľ
Užívateľ
PHP OOP MYSQLi Class

Registrovaný: 26.12.06
Prihlásený: 16.11.19
Príspevky: 3971
Témy: 181 | 181
Bydlisko: Nitra / Bra...
NapísalOffline : 08.04.2012 15:39 | PHP OOP MYSQLi Class

aj z deklaracie premennych?

dalsiu chybu co som si vsimol je nespravne retazenie,
Kód:
$result = $db->select('*')->from('users')->where('id = 10');

toto ti fungovat nebude

// pridané po 21 sekundách od posledného príspevku

skus si nastudovat vaice teorie na php.net alebo niekde inde, google ti pomoze


_________________
Sorry za prelkepy
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 07.04.12
Prihlásený: 12.04.12
Príspevky: 4
Témy: 1 | 1
Napísal autor témyOffline : 08.04.2012 15:42 | PHP OOP MYSQLi Class

Ano aj z premennych. Ako by si to retazil ty? A uz som pisal, ze som zaciatocnik v OOP. Len som chcel vediet ako to mam urobit, aby to fungovalo


 [ Príspevkov: 7 ] 


PHP OOP MYSQLi Class



Podobné témy

 Témy  Odpovede  Zobrazenia  Posledný príspevok 
V tomto fóre nie sú ďalšie neprečítané témy.

database class, oop php

v PHP, ASP

10

820

16.02.2010 15:12

rooobertek

V tomto fóre nie sú ďalšie neprečítané témy.

OOP PHP

v PHP, ASP

1

534

29.04.2010 17:32

stenley

V tomto fóre nie sú ďalšie neprečítané témy.

PHP OOP

v PHP, ASP

3

330

18.02.2013 7:20

DeiForm

V tomto fóre nie sú ďalšie neprečítané témy.

OOP v PHP

v PHP, ASP

1

889

02.06.2009 11:02

walther

V tomto fóre nie sú ďalšie neprečítané témy.

OOP v PHP

[ Choď na stránku:Choď na stránku: 1, 2 ]

v PHP, ASP

41

3027

28.11.2009 16:01

Tominator

V tomto fóre nie sú ďalšie neprečítané témy.

[PHP] OOP diskusia

v PHP, ASP

7

2503

30.03.2015 12:59

majky358

V tomto fóre nie sú ďalšie neprečítané témy.

OOP PHP problémy začiatočníka

v PHP, ASP

11

501

13.11.2014 13:29

Mego

V tomto fóre nie sú ďalšie neprečítané témy.

oop php - vyuzitie, vyhody

[ Choď na stránku:Choď na stránku: 1, 2 ]

v PHP, ASP

32

2424

24.05.2008 15:04

Tominator

V tomto fóre nie sú ďalšie neprečítané témy.

oop v php - predavanie udajov

v PHP, ASP

1

385

16.02.2010 19:06

Ďuri

V tomto fóre nie sú ďalšie neprečítané témy.

[VYRIESENE] PHP unzip class

v PHP, ASP

6

572

26.02.2009 13:01

Flety

V tomto fóre nie sú ďalšie neprečítané témy.

Mysql database php class

v PHP, ASP

25

1347

28.02.2008 13:04

martin90

V tomto fóre nie sú ďalšie neprečítané témy.

[VYRIESENE] PHP template class

v PHP, ASP

23

1155

24.02.2009 23:09

Flety

V tomto fóre nie sú ďalšie neprečítané témy.

pomoc s Smarty.class.php

v PHP, ASP

1

533

27.09.2010 20:52

walther

V tomto fóre nie sú ďalšie neprečítané témy.

Ajax + PHP Class - server bez reakcie

v JavaScript, VBScript, Ajax

3

613

20.07.2013 2:36

math-ew

V tomto fóre nie sú ďalšie neprečítané témy.

MicroSDHC class 2 alebo class 4 mám vrátiť ?

v Pamäte

3

708

16.12.2010 20:09

majky358

V tomto fóre nie sú ďalšie neprečítané témy.

mysqli

v PHP, ASP

2

721

03.02.2009 13:30

janik366



© 2005 - 2024 PCforum, edited by JanoF