login  Naam:   Wachtwoord: 
Registreer je!
 Forum
Zoeken  Regels  Help

[php] MySQLi Extension in andere class gebruiken gaat fout (Opgelost)

Offline Nrzonline - 09/05/2010 02:27 (laatste wijziging 09/05/2010 02:54)
Avatar van NrzonlinePHP ver gevorderde Beste,

Het is lang geleden dat ik met php aan het knooien ben geweest, en toch weer is begonnen om wat voor mezelf te maken. Ben even bezig om van MySQL naar MySQLi over te stappen. Aangezien het niet meteen wou lukken, heb ik even een simpel opzetje gemaakt om het te testen of het werkt, dus dit is niet het werkelijke script maar een testkeesje.

File: index.php
Voor een testje wil ik dat de gebruiker met user ID 1 wordt opgehaald uit het database,
via de Users class.
  1.  
  2. require ('config.inc.php'); // Wordt tevens connectie met DB gemaakt, zie volgend snippet.
  3.  
  4. require ('users.class.php');
  5. $clUsers = new Users ();
  6. $clUsers->lastUser (); // Testen wat er gebeurt bij een query


File: Users.class.php
  1. class Users {
  2. public function lastUser () {
  3. global $database;
  4. $sQuery = 'SELECT username FROM users WHERE id = 1';
  5. $qGetUser = Database::query ($sQuery);
  6. }
  7. }


File: config.inc.php
  1. <?PHP
  2.  
  3. $host = 'localhost';
  4. $username = 'root';
  5. $password = '';
  6. $database = 'testkees';
  7.  
  8. require ('database.class.php');
  9. $clDatabase = new Database ($host, $username, $password, $database);
  10.  
  11. ?>


File: database.class.php
Omdat ik een extension wil maken van de standaard MySQLi class, heb ik het volgende:
  1. class Database extends Mysqli {
  2.  
  3. private $database;
  4. private $result;
  5.  
  6. public function __construct ($host, $username, $password, $database) {
  7. $this->database = parent::__construct ($host, $username, $password, $database);
  8.  
  9. if (mysqli_connect_error ()) {
  10. die ('Cannot connect database: ' . mysqli_errno ());
  11. }
  12. }
  13.  
  14. public function query ($sQuery) {
  15. $this->result = parent::query ($sQuery);
  16. /**
  17. * Hier bij parent::query gaat het fout, ik krijg namelijk de volgende foutmelding:
  18. * Fatal error: Non-static method mysqli::query() cannot be called statically, assuming $this from incompatible
  19. * context in C:\Xampp\xampp\htdocs\e-terhorst\database.class.php on line 18
  20. **/
  21.  
  22. if (!$this->result) {
  23. die ('Failed to execute query: ' . parent::errno());
  24. }
  25. }
  26. }


De opbouw zoals ik het heb kan duidelijk niet, want ik krijg:
error schreef:
Fatal error: Non-static method mysqli::query() cannot be called statically, assuming $this from incompatible context in C:maphtdocsprobeerdatabase.class.php on line 18


Ik ben al aan het googelen geweest en knutselen met de opbouw, maar ik ga het zo niet fixen. Waarschijnlijk zie ik een OOP gerelateerd structuur fout over het hoofd, maar mocht u het weten... Please help  

Mvg, ed!

4 antwoorden

Gesponsorde links
Offline Filip - 09/05/2010 10:09
Avatar van Filip IRC guru Hij zegt het toch zelf... Je kan die functie niet static aanspreken omdat het geen static is...

Maak er "static public function" van.. Simpel toch...
Offline Nrzonline - 09/05/2010 11:48
Avatar van Nrzonline PHP ver gevorderde MySQLi class is een PHP extensie waar ik zo niet bij kan, en even kan gaan aanpassen? 
Offline Martijn2008 - 09/05/2010 13:17 (laatste wijziging 09/05/2010 13:34)
Avatar van Martijn2008 PHP beginner Hier staat de basis van MySQLi uitgelegd. Wat je ook moet weten, is dat er in PHP6 het een en ander veranderd.
Offline Nrzonline - 26/05/2010 22:33
Avatar van Nrzonline PHP ver gevorderde oplossing: instance
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2018 Sitemasters.be - Regels - Gehost door: FireMultimedia - Laadtijd: 0.591s