| | |
| Stránka: 1 z 1
| [ Príspevkov: 7 ] | |
Autor | Správa |
---|
Registrovaný: 07.04.12 Prihlásený: 12.04.12 Príspevky: 4 Témy: 1 | Napísal lolexc: 07.04.2012 16:46 | |
|
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']; } ?>
|
|
Registrovaný: 11.08.07 Príspevky: 4088 Témy: 34 Bydlisko: Brno | Napísal Ďuri: 08.04.2012 11:36 | |
|
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.
|
|
Registrovaný: 07.04.12 Prihlásený: 12.04.12 Príspevky: 4 Témy: 1 | Napísal autor témy lolexc: 08.04.2012 14:05 | |
|
Dakujem za odpoved, ale stale tomu nechapem ako to mam vyriesit. Pomohol by si mi s tym?
|
|
Registrovaný: 26.12.06 Prihlásený: 16.11.19 Príspevky: 3971 Témy: 181 Bydlisko: Nitra / Bra... | Napísal emer: 08.04.2012 14:27 | |
|
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 |
|
Registrovaný: 07.04.12 Prihlásený: 12.04.12 Príspevky: 4 Témy: 1 | Napísal autor témy lolexc: 08.04.2012 14:41 | |
|
emer: static som vymazal, ale stale ta ista chyba
|
|
Registrovaný: 26.12.06 Prihlásený: 16.11.19 Príspevky: 3971 Témy: 181 Bydlisko: Nitra / Bra... | Napísal emer: 08.04.2012 15:39 | |
|
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íspevkuskus si nastudovat vaice teorie na php.net alebo niekde inde, google ti pomoze
_________________ Sorry za prelkepy |
|
Registrovaný: 07.04.12 Prihlásený: 12.04.12 Príspevky: 4 Témy: 1 | Napísal autor témy lolexc: 08.04.2012 15:42 | |
|
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
|
|
| Stránka: 1 z 1
| [ Príspevkov: 7 ] | |
Podobné témy | Témy | Odpovede | Zobrazenia | Posledný príspevok |
---|
| database class, oop php v PHP, ASP | 10 | 781 | 16.02.2010 15:12 rooobertek | | OOP PHP v PHP, ASP | 1 | 491 | 29.04.2010 17:32 stenley | | PHP OOP v PHP, ASP | 3 | 292 | 18.02.2013 7:20 DeiForm | | OOP v PHP v PHP, ASP | 1 | 858 | 02.06.2009 11:02 walther | | OOP v PHP [ Choď na stránku: 1, 2 ] v PHP, ASP | 41 | 2955 | 28.11.2009 16:01 Tominator | | [PHP] OOP diskusia v PHP, ASP | 7 | 2449 | 30.03.2015 12:59 majky358 | | OOP PHP problémy začiatočníka v PHP, ASP | 11 | 471 | 13.11.2014 13:29 Mego | | oop php - vyuzitie, vyhody [ Choď na stránku: 1, 2 ] v PHP, ASP | 32 | 2336 | 24.05.2008 15:04 Tominator | | oop v php - predavanie udajov v PHP, ASP | 1 | 348 | 16.02.2010 19:06 Ďuri | | [VYRIESENE] PHP unzip class v PHP, ASP | 6 | 544 | 26.02.2009 13:01 Flety | | [VYRIESENE] PHP template class v PHP, ASP | 23 | 1105 | 24.02.2009 23:09 Flety | | Mysql database php class v PHP, ASP | 25 | 1312 | 28.02.2008 13:04 martin90 | | pomoc s Smarty.class.php v PHP, ASP | 1 | 498 | 27.09.2010 20:52 walther | | Ajax + PHP Class - server bez reakcie v JavaScript, VBScript, Ajax | 3 | 577 | 20.07.2013 2:36 math-ew | | MicroSDHC class 2 alebo class 4 mám vrátiť ? v Pamäte | 3 | 666 | 16.12.2010 20:09 majky358 | | mysqli v PHP, ASP | 2 | 694 | 03.02.2009 13:30 janik366 |
| Nemôžete zakladať nové témy v tomto fóre Nemôžete odpovedať na témy v tomto fóre Nemôžete upravovať svoje príspevky v tomto fóre Nemôžete mazať svoje príspevky v tomto fóre
|
|