SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



CronJob-Service    
bei SELFPHP mit ...



 + minütlichen Aufrufen
 + eigenem Crontab Eintrag
 + unbegrenzten CronJobs
 + Statistiken
 + Beispielaufrufen
 + Control-Bereich

Führen Sie mit den CronJobs von SELFPHP zeitgesteuert Programme auf Ihrem Server aus. Weitere Infos



:: Buchempfehlung ::

TYPO3 Kochbuch

TYPO3 Kochbuch zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > MySQLi/PDO/(MySQL)

MySQLi/PDO/(MySQL) Anfänger, Fortgeschrittene oder Experten können hier Fragen und Probleme rund um MySQLi/PDO/(MySQL) diskutieren

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 06.01.2010, 12:22:59
mercutio31 mercutio31 ist offline
Anfänger
 
Registriert seit: Jan 2010
Alter: 45
Beiträge: 1
PHP/Mysqli

Guten Morgen,vielleicht könnt Ihr mir bei meinem Denkfehler helfen!!!

config.php
PHP-Code:
<?php

class mysqlidb extends mysqli {
        
        protected 
$MySQLiObj;
        public 
$result;
        
        
/** Konstruktor */
        
public function __construct() {
        require_once(
'conf.inc.php');
            
$MySQLiObj = @parent::__construct($mysqlhost$mysqluser,$mysqlpasswd$mysqldb);
            
            
/** Prüfen, ob ein Fehler aufgetreten ist. */
            
if (mysqli_connect_errno()) {
                die (
mysqli_connect_error() . ' Error No. ' mysqli_connect_errno());
            }
        }
        
        
/** Destruktor */
        
public function __destruct() {
            if (
$this -> MySQLiObj) {
                
$this -> close();
            }
        }
        
        
/** Methoden */
        
public function getQuery($qry) {
            
            
$this -> result parent::query($qry);
            
            return 
$this -> result;
        }
        
        public function 
getFetchArray() {
            return 
$this -> fetch_array();
        }
        
        public function 
getFetchAssoc() {
            return 
$this -> fetch_assoc();
        }
        public function 
getFetchRow() {
        return 
$this -> fetch_row();
    }
        public function 
getNumRows() {
            return 
$this -> affected_rows();
        }
    
    public function 
getFetchObject() {
        return 
$this -> fetch_object();
    }

        public function 
getLastInsertedID() {
            return 
mysqli_insert_id($this);
        }
    }

?>
test.php
PHP-Code:
<?php
error_reporting
();
ini_set ('error_reporting'1);
include(
'inc/conf.php');

function 
LoadLang($lang)
{                
    
$db = new mysqlidb();
    
$text = array($lang);
    
$result "select `key`,`$lang` from contents order by id;";
    
$result $db->Query();
    while(
$row $result->getFetchRow()):
    
$text[$row[0]] = $row[1];
    endwhile;
    return 
$text;
}
Ich erhalte folgende Fehlermeldung
Fatal error: Call to a member function getFetchRow() on a non-object in ziele 16

Zeile 16 ->
PHP-Code:
while($row $result->getFetchRow()): 

Danke für eure Hilfe
Mit Zitat antworten
  #2  
Alt 06.01.2010, 13:03:03
mgr mgr ist offline
Anfänger
 
Registriert seit: Sep 2009
Alter: 42
Beiträge: 14
AW: PHP/Mysqli

Hi mercutio

zuerst mal konkret zu deiner Frage:
getFetchRow() ist keine Funktion der Klasse mysqli_result, sondern von mysqlidb.
Der Aufruf müsste korrekterweise also '$db->getFetchRow()' heissen.

Dein Problem liegt aber ganz wo anders:

Die fetch_XY Funktionen gehören alle zur Klasse mysqli_result. Deine Klasse ist aber von mysqli abgeleitet, das hat zur Folge dass '$this->fetch_XY' einen Fehler schmeisst.

Weiter hast du zwar eine Membervariable von mysqli_result in deiner Klasse, benutzt die aber nicht bzw. gibst sie sogar noch zurück. Das macht keinen Sinn. Du möchtest ja dass die Funktionen getFetchRow() etc. benutzt werden. Demnach sollte die Membervariable $result weder public sein noch zurückgegeben werden.

Die einzige Funktion die funktionieren "könnte", ist getLastInsertedID(). Aber auch nur weil du hier den prozeduralen Stil benutzt.

'affected_rows' ist übrigens eine Variable, keine Funktion. Und die Klasse mysqlidb in eine Datei namens 'config.php' zu stecken ist nicht nachvollziehbar und deshalb unsinnig.


Fazit: Deine Klasse scheint mir so komplett falsch zu sein, dass ich nicht sicher bin ob ich richtig gelesen habe. Falls ich richtig gelesen habe, solltest du dir ein bisschen Lesestoff zu den Themen mysqli und OO-Design besorgen (und lesen).

Gruss
mgr
Mit Zitat antworten
  #3  
Alt 06.01.2010, 14:11:18
cortex cortex ist offline
SELFPHP Profi
 
Registriert seit: Apr 2008
Alter: 48
Beiträge: 1.938
AW: PHP/Mysqli

wozu gibt's hier wohl ein unterforum MYSQL...?

[mod: verschoben]

cx
Mit Zitat antworten
  #4  
Alt 06.01.2010, 14:18:09
cortex cortex ist offline
SELFPHP Profi
 
Registriert seit: Apr 2008
Alter: 48
Beiträge: 1.938
AW: PHP/Mysqli

Zitat:
Zitat von mgr Beitrag anzeigen
Deine Klasse scheint mir so komplett falsch zu sein
ich gehe davon aus, dass der code nicht auf seinem mist gewachsen ist, da gar keine (halbwegs konkrete) frage gestellt wurde. irgendwas funktioniert halt nicht...

@op: punkt c

cx
Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 00:24:02 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.


© 2001-2024 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt