[OOP] mysqli + Klassen

Moin,

ich benötige nochmal euren Rat. Ich arbeite zur Zeit mit OOP und ebenfalls mit mysqli. Nun erhalte ich immer folgendes (error_reporting(E_ALL), da Entwicklungsmodus).

Jetzt mal abgesehen, von der Funktion mysqli_real_escape_string(), erhalte ich das bei allen mysqli_ Funktionen.

So nun mal das relevante, also wie das initialisiert wird:

class db {
// dbs ist ein array, das hier initialisiert wird
public $msql;
function __construct {
$this->msql = new mysqli($this->dbs['host'],$this->dbs['user'],$this->dbs['pass'],$this->dbs['db']);
}
}

class zwei extends db
{
mysql_query($this->msql, $query);
}

Eigentlich sollte das doch funktionieren? Also ist die vereinfachte Darstellung … Trotzdem behauptet er, dass der erste Parameter null wäre. An den Datenbank-Variablen stimmen auch … ich peils nicht :susp:

MfG
myPages

[code]class db {
// dbs ist ein array, das hier initialisiert wird
public $msql;
function __construct {
$this->msql = new mysqli($this->dbs[‘host’],$this->dbs[‘user’],$this->dbs[‘pass’],$this->dbs[‘db’]);
}
}

class zwei extends db
{
mysql_query($this->msql, $query);
}[/code]

Hi,

(ich geh mal davon aus, dass “mysql_query” kein Typo war…)

also, entweder benutzt du die “normalen” mysql Funktionen oder mysqli…
mysql_query() (eine “normale” Funktion") erwartet als ersten Parameter einen String mit dem Query.
Soweit ich sehe ist das, was du ihm gibst, ein mysqli-Objekt.

Um mit mysqli einen Query auszufuehren benutz $this->msql->query(“stuff”);

us.php.net/manual/en/book.mysqli.php :wink:

bnw

Moin,

äh ja war ein Tippfehler von mir. Ich benutze mysqli …

Wenn ich das so schreibe, wie du mir das rätst, kommt dabei folgendes rum:

Fatal error: Call to a member function query() on a non-object in [...] on line X

// bei $this->msql->query

Anscheinend ist für den Interpreter ja $msql bzw. $this->msql kein Objekt oder sehe ich da was falsch? Aber der Verbindungsaufbau stammt ja aus php.net und die phpinfo() liefert mir auch zurück, dass mysqli unterstützt wird.

b[//Edit: Gelöst, Fehler war, dass ich vergessen hatte, die Instanzierung vorzunehmen. Folgender Aufbau löst das Problem:]b

class db {
// dbs ist ein array, das hier initialisiert wird
public $msql;
function __construct {
$this->msql = new mysqli($this->dbs['host'],$this->dbs['user'],$this->dbs['pass'],$this->dbs['db']);
}
}

class zwei extends db
{
public function __construct() { db::__construct(); }
// usw.
}

MfG
myPages