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 ::

Einführung in XHTML, CSS und Webdesign

Einführung in XHTML, CSS und Webdesign 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 > PHP Grundlagen

PHP Grundlagen Hier kann über grundlegende Probleme oder Anfängerschwierigkeiten diskutiert werden

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 16.07.2005, 16:56:18
Don Stefano Don Stefano ist offline
Anfänger
 
Registriert seit: Feb 2005
Beiträge: 40
Probleme mit mysql Erweiterung

Hallo zusammen,

Ich verwende die in PHP 5 neu hinzugekommene mysqli Erweiterung um mit der Datenbank zu kommunzieren.


Hier der kurze Code der zugehörigen Datei, xmysqli.php, die ich leicht abgewandelt aus einem Lehrbuch entnommen habe:

PHP-Code:
<?php

class xmysqli extends mysqli {

    const 
host    "localhost";
    const 
user    "MeinUsername";
    const 
passwd "MeinPasswort";
    const 
mydb    "NameDerDatenbank";

     function 
__construct()
     {
         
parent::__construct(self::hostself::userself:asswdself::mydb);
     }
    
    function 
echoquery($query)
    {
        echo 
"<p>$query</p>";
        
$result $this->query($query);
        if (
$this->errno)
        {
            echo(
$this->error);
            return 
NULL;
        }
        
        echo 
'<table border cellpadding="5"><tr>';
        echo 
'<th>[Nr]</th>';
        while (
$field $result->fetch_field())
            echo 
"<th>$field->name</th>";
        echo 
"</tr>";
        
$rec 0;
        while (
$row $result->fetch_row())
        {
            echo 
"<tr><td>$rec</td>"$rec++;
            for (
$i 0$i $result->field_count$i++)
             echo 
"<td>".htmlentities($row[$i])."&nbsp;</td>";
            echo 
"</tr>\n";
        }
        echo 
"</table>";
        
$result->close();
        return 
TRUE;
    }
}
?>
Diese Datei wird dann auf allen Seiten meiner Skripte includet, wo ich mit der Datenbank kommuniziere. Und zwar so:

PHP-Code:
require_once("xmysqli.php");
$db = new xmysqli(); 
Danach stelle ich dann die Datanbankverbindung z.B. wie folgt her:

PHP-Code:
$result $db->query("select * from tabelle where userid='$userid'"); 

Auf meinem Entwicklungssystem klappte das immer ohne Probleme. Nun erhielt ich aber folgende Fehlermeldung:

Code:
Fatal error: Class 'mysqli' not found in /www/htdocs/w0055c8a/xmysqli.php on line 3
Ich dachte mir, es wird wohl daran liegen, dass diese Erweiterung in der php.ini bei meinem Hoster nicht aktiviert ist (was auch der Fall ist). Also habe ich meine Skripte "heruntergegradet" und die alte mysql-Erweiterung verwendet.

Dies habe ich einfach so gemacht, dass ich bei allen Befehlen (z.B: "mysqli_num_rows" oder "mysqli_errno") das "i" weggelassen habe. (Also z.B. "mysql_num_rows").

Im obigen Code habe ich also nur "extends mysql" eingetragen. Die Klasse heißt weiterhin "xmysqli" (was ja egal sein müsste).

Meines Wissens nach ist dies der einzige Unterschied beim verwenden der beiden Erweiterungen.

Jedenfalls war ich dann doch sehr überrascht, als nachdem Ändern folgende Fehlermeldung erschien:

Code:
Fatal error: Class 'mysql' not found in /www/htdocs/w0055c8a/xmysqli.php on line 3
Der Support meines Hosters schrieb mir daraufhin:
"Das Schlüsselwort extends bedeutet das die Klasse die dahinter angegeben wird vorhanden sein muss und erweitert wird.

Ich habe Ihren Code einmal beispielhaft geändert, was nur zum demonstrieren gedacht ist, aber im Grunde keine sinnvolle Sequenz darstellt:"

PHP-Code:
class mysql {

function 
tue_nichts(){

    return 
0;
    }

Leider hilft mir das aber auch nicht im geringsten weiter.

Ist vielleicht jemand von euch in der Lage, den obigen Code (der Datei xmysqli.php) so umzuschreiben, dass es wieder möglich ist mit
PHP-Code:
require_once("xmysqli.php");
$db = new xmysqli();
$result $db->query("select * from tabelle where userid='$userid'"); 
meine Datenbank anzusprechen?

Ich bin verzweifelt und kenne mich leider auch mit Klassen und Objektorientierung nicht wirklich aus. Ich habe keine Idee, was ich nun tun muss, damit meine Skripte die Datei xmysqli.php wieder verwenden können.

Vielen Dank für jede Hilfe
Stefan

Geändert von Don Stefano (16.07.2005 um 16:59:24 Uhr)
Mit Zitat antworten
  #2  
Alt 16.07.2005, 21:05:05
Benutzerbild von xabbuh
xabbuh xabbuh ist offline
SELFPHP Guru
 
Registriert seit: May 2003
Beiträge: 7.187
AW: Probleme mit mysql Erweiterung

Für MySQLi gibt es anscheinend eine vordefinierte Klasse mysqli, mit der Datenbankabfragen gemacht werden können. Für MySQL existiert meines Wissen nach keine entsprechende vordefinierte Klasse. Du wirst dir also eine entsprechende Datenbankklasse selbst schreiben müssen. Wie so etwas zum Beispiel geht, kannst du hier nachlesen: http://tut.php-q.net/mysql-class.html
Mit Zitat antworten
  #3  
Alt 18.07.2005, 14:24:44
Don Stefano Don Stefano ist offline
Anfänger
 
Registriert seit: Feb 2005
Beiträge: 40
AW: Probleme mit mysql Erweiterung

Vielen Dank.

Ich habe inzwischen verstanden, wo das Problem liegt. Da ich mich mangelnden Wissens außer Lage sehe selbst eine Datenbankklasse zu erstellen werde ich einfach Abstand von der Objektorientierung nehmen und statt dessen die prozessorientierte Vorgehensweise wählen, die ich wenistens nachvollziehen kann.

Die Vorteile einer Datenbankklasse sind mir eh nicht nicht klar. Außer dass dabei weniger Schreibarbeit anfällt, sehe ich keine Vorteile. Und das kann ich auch mit Funktionen erreichen.

Allerdings leuchtet es mir nicht im geringesten ein, dass selbt moderne Server (mit php5 und mysql 4.1) nicht mit der mysqli Erweiterung kompiliert werden, wo nun schon solche Datenbankfunktionalitäten seit php5 zur Verfügung stehen. Das verstehe wer will. Ich nicht.
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

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
mysql erweiterung kann nicht geladen werden ... davdn MySQLi/PDO/(MySQL) 13 18.06.2006 16:24:17
Mysql fetch_array() Probleme Cooper PHP Grundlagen 4 21.05.2004 11:07:16
Probleme mit MySQL water MySQLi/PDO/(MySQL) 3 28.11.2003 15:31:08
probleme mit mysql hightune PHP für Fortgeschrittene und Experten 1 04.07.2003 16:23:08
Probleme mit MySQL Connecten Niels PHP für Fortgeschrittene und Experten 3 16.01.2003 19:12:09


Alle Zeitangaben in WEZ +2. Es ist jetzt 12:45:29 Uhr.


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


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