Webstatt.org - Community seit 2006 - 2012 (2024?)

MySQL Klassen Problem

user-137
28.01.2007 14:45

Hi,

hab heute mal versucht die Klasse hier zu verstehen und hab die dann schön abgetippt.

Nun fand ich es unpraktisch jedes mal sowas zu machen:

$mysql = new DB_MySQL;
$mysql->connect('localhost', 'test', 'root', ''zwinkern;
$mysql->query('SELECT spalte FROM tabelle'zwinkern;
$row = $mysql->fetchRow());


Und hab mir überlegt wie man die connection nur einmal schreiben muss, dan ist sowas rausgekommen:

//SQL Query/Befehl ausführen
public function query ($query, $conn) {
if (is_resource($conn->connection)) {

if (is_resource($conn->result)) {
mysql_free_result($conn->result);
}

$conn->result = mysql_query($query, $conn->connection);
}

}


Somit reduziert sich der Code, da man an das Ende jedes Querys einfach durch ein zweites Argument angibt welche Connection man will.


//Verbindung herstellen
$mysql = new DB_MySQL;
$mysql->connect("localhost", "internetiv", "root", "pass"zwinkern;

//Ausgeben
$conf_1_mysql -> query ("SELECT * FROM data WHERE id='1'", $mysql);
$row = $conf_1_mysql->fetchRow();

$conf_2_mysql -> query ("SELECT * FROM page_title WHERE id='1'", $mysql);
$row2 = $conf_2_mysql->fetchRow();


Soweit so gut, nur leider kommt mir nun ein Fehler daher der mir sowas erzählt:

Fatal error: Call to a member function query() on a non-object in K:\Programme\xampp\htdocs\www\design\config.inc.php on line 6


Das wären dan die Zeilen mit der Variable "$conf_1_mysql".
Doch ich sehe keinen Fehler.

Mfg. BNS

Avatar user-271
28.01.2007 14:57

$conf_1_mysql

wo ist das als object definiert

mit $conf_2_mysql genau das gleiche zwinkern



andere frage? was ist bei dir komfortabler, du musst 1. Parameter mehr übergeben...super Fettes Grinsen das kannste dir auch sparen zwinkern

#!/bin/bash
traurig){ neutral:& };:
Avatar user-118
28.01.2007 14:58

Wenn du das Objekt so ausrufst

$mysql = new DB_MySQL;


Kannst du nicht aufeinmal deine queryfunktion so aufrufen:

$conf_1_mysql->query ("SELECT * FROM data WHERE id='1'", $mysql);


Das müsste gehen:

$mysql->query ("SELECT * FROM data WHERE id='1'", $mysql);


Du greifst ja auf eine Funktion im Objekt deiner Mysql Klasse zu, die in $mysql hinterlegt ist.

mfg Alex

edit:// user-271 war schneller... mist

Ich brauche keine Signatur
user-137
28.01.2007 15:00

Ah, klar. thx.

Avatar user-271
28.01.2007 15:00

aber kuck mal...du übergibst das $mysql....speicher die connection doch intern in er klasse Fettes Grinsen

class MySql {
private $conn;

public function query ( $query ) {
print $this->conn;
}
}


edit: wenn du $conn->connection aufrufst, dann machst du einen aufruf in deine eigene klasse über aussen??? hääääh? das ist ein enormer unweg...nur so nebenbei

#!/bin/bash
traurig){ neutral:& };:
user-137
28.01.2007 15:07

OK, werde es nochmal überdenken, aber noch eine Frage wie gebe ich dan die results aus?

Mit
$row->Spaltenname;

geht es nicht.

Avatar user-271
28.01.2007 15:09

es gibt noch was anderes als fetch_object ;D

mysql_fetch_assoc($this->result);


->siehe hier

du kannst es entweder über:
$row['spaltenname'] oder $row[\d] ausgeben Fettes Grinsen

#!/bin/bash
traurig){ neutral:& };:
user-137
28.01.2007 15:20

Original von user-271
es gibt noch was anderes als fetch_object ;D

mysql_fetch_assoc($this->result);


->siehe hier


Du meinst doch:
$row = mysql_fetch_row($this->result);



du kannst es entweder über:
$row['spaltenname'] oder $row[\d] ausgeben Fettes Grinsen


z.B.
$row['design'];
geht nicht, es wird bei keiner Spalte etwas ausgegeben.