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::host, self::user, self:asswd, self::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])." </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