Problem mit mysql Klasse

Also die Verbindung zur DB steht. Wenn ich einen Fehler bei der Abfrage einbaue dann erscheint auch die entsprechende Felhlermeldung. Lediglich die Ausgabe funktioniert nicht.

Sehr komisch!
 
Ok poste mal den script wo du die klasse einbindest und irgendeinen Funktionaufruf der Klasse.

ja mein Gott wie konnte ich, vor den entspechenden Funktionen die du nutzt aus der Klasse ein public setzen. EXAMPLE: public function meineFunktion(){[...]bla [...]}
 
Zuletzt bearbeitet von einem Moderator:
Also das ist das einzubindente Script mit der Klasse:

PHP:
<?php

##### Hier folgen die Einstellungen der Verbindungen

define("DB_STANDARD", 1);

# Verbindung 'STANDARD'
$mySQL_settings[1]['host'] = 'localhost';
$mySQL_settings[1]['user'] = 'root';
$mySQL_settings[1]['pswd'] = '';
$mySQL_settings[1]['dbname'] = 'cms';

####################

class mySQL {
var $connected = FALSE;
var $host;
var $user;
var $pswd;
var $dbname;
var $verbindung;
var $sql_query;
var $query_counter;

function mySQL($ID = DB_STANDARD) {
global $mySQL_settings;
$this->host = $mySQL_settings[$ID]['host'];
$this->user = $mySQL_settings[$ID]['user'];
$this->pswd = $mySQL_settings[$ID]['pswd'];
$this->dbname = $mySQL_settings[$ID]['dbname'];
$this->verbindung = @mysql_connect($this->host, $this->user, $this->pswd);
if ($this->verbindung === FALSE) {
$this->error("CONN.OPEN");
}
if (@mysql_select_db($this->dbname, $this->verbindung) === FALSE) {
$this->error("DB.SELECT");
} else {
$this->connected = TRUE;
}
}

// wenn das Skript nicht mit PHP5 ausgeführt wird, folgende Funktion einfach löschen!
function __destruct() {
if (!$this->connected) {
$this->error("NO CONN");
} else {
if (@mysql_close($this->verbindung) === FALSE) {
$this->error("CONN.CLOSE");
}
}
}

function DBQueries() {
if (!$this->connected) {
$this->error("NO CONN");
} else {
return $this->query_counter;
}
}

function DrawDBQueries() {
if (!$this->connected) {
$this->error("NO CONN");
} else {
if ($this->DBQueries == 1) {
$text = "Es war 1 mySQL-Abfrage nötig";
} else {
$text = "Es waren ".$this->DBQueries." mySQL Abfragen nötig";
}
}
return $text;
}

function query($sql) {
if (!$this->connected) {
$this->error("NO CONN");
} else {
$this->sql_query = $sql;
$this->query_counter++;
$result = @mysql_query($this->sql_query, $this->verbindung);
if ($result === FALSE) {
$this->error("QUERY FAILED");
} else {
return $result;
}
}
}

function select($sql, $anzahl = NULL) {
if (!$this->connected) {
$this->error("NO CONN");
} else {
$result = $this->query($sql);
if ($result !== FALSE) {
$anzahl1 = @mysql_num_rows($result);
$anzahl = $anzahl1;
for($i = 0; $i < $anzahl; $i++) {
$array[$i] = @mysql_fetch_object($result);
}
}
}
return $array;
}

function error($error_type) {
switch ($error_type) {
case 'CONN.OPEN':
$text = "Beim Öffnen der Verbindung ist ein Fehler aufgetreten";
break;

case 'CONN.CLOSE':
$text = "Beim Schließen der Verbindung ist ein Fehler aufgetreten";
break;

case 'NO CONN':
$text = "Die angeforderte Aktion konnte nicht durchgeführt werden, da keine Verbindung zur Datenbank besteht!";
break;

case 'DB.SELECT':
$text = "Beim Auswählen der Datenbank ist ein Fehle aufgetreten. Ev. ist die Datenbank nicht vorhanden";
break;

case 'QUERY FAILED':
$text = "Während folgender Abfrage ist ein Fehler aufgetreten:\n\n".$this->sql_query;
break;

default:
$text = "Es ist folgender, unbekannter Fehler aufgetreten: ".$error_type;
}
if ($this->connected) {
$text .= "\n\nmySQL meldet:\nFehler-Nummer: ".@mysql_errno($this->verbindung)."\nFehler-Beschreibung: ".@mysql_error($this->verbindung);
}
echo $text."\n";
}

}

Hier ein Funktionsaufruf:

PHP:
$sql = new mySQL(); // neue Verbindung
$daten = $sql->select("SELECT * FROM config WHERE config_id = '1'"); // einfache Abfrage 


echo "Ergebnis: ".$daten->p_name;
 
schreibe public vor der Funktion, dann geht es- weil du versuchst eine interne function aufzurufen...
 
hmmm vor welche FUnktion? Vor alle?

Wenn ich das mache dann kommt:

Parse error: syntax error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in C:\xampp\htdocs\cms\test.php on line 25
 
hmmm vor welche FUnktion? Vor alle?
na vor denen die du in deinen script aufrufst. Stichwort Objektorientiert, Funktionen Declaration-> wenn default "privat" dann gelten sie nur innerhalb der Klasse, möchtest du sie aber nutzen, dann musst du sie mit public oder static deklarieren.

hmmm vor welche FUnktion? Vor alle?

Wenn ich das mache dann kommt:

Parse error: syntax error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in C:\xampp\htdocs\cms\test.php on line 25
Das ist doch nur ein Schreibfehler, in test.php Zeile 25 , kann natürlich auch sein das du schon vorher vergessen hast eine Klammer zu schliessen.
 
Naja ich seh keinen Schreibfehler....

PHP:
public function mySQL($ID = DB_STANDARD) {
global $mySQL_settings;
$this->host = $mySQL_settings[$ID]['host'];
$this->user = $mySQL_settings[$ID]['user'];
$this->pswd = $mySQL_settings[$ID]['pswd'];
$this->dbname = $mySQL_settings[$ID]['dbname'];
$this->verbindung = @mysql_connect($this->host, $this->user, $this->pswd);
if ($this->verbindung === FALSE) {
$this->error("CONN.OPEN");
}
if (@mysql_select_db($this->dbname, $this->verbindung) === FALSE) {
$this->error("DB.SELECT");
} else {
$this->connected = TRUE;
}
}
 
Naja ich seh keinen Schreibfehler....

PHP:
public function mySQL($ID = DB_STANDARD) {
global $mySQL_settings;
$this->host = $mySQL_settings[$ID]['host'];
$this->user = $mySQL_settings[$ID]['user'];
$this->pswd = $mySQL_settings[$ID]['pswd'];
$this->dbname = $mySQL_settings[$ID]['dbname'];
$this->verbindung = @mysql_connect($this->host, $this->user, $this->pswd);
if ($this->verbindung === FALSE) {
$this->error("CONN.OPEN");
}
if (@mysql_select_db($this->dbname, $this->verbindung) === FALSE) {
$this->error("DB.SELECT");
} else {
$this->connected = TRUE;
}
}

poste mal die komplette test.php .....
 
Also public, private, static und co sind glaube ich erst ab php5 verfügbar. ich nutze php4 bzw das script soll php4 tauglich sein.

Anbei nochmal die Komplette Datei:

PHP:
<?php

##### Hier folgen die Einstellungen der Verbindungen

define("DB_STANDARD", 1);

# Verbindung 'STANDARD'
$mySQL_settings[1]['host'] = 'localhost';
$mySQL_settings[1]['user'] = 'root';
$mySQL_settings[1]['pswd'] = '';
$mySQL_settings[1]['dbname'] = 'cms';

####################

class mySQL {
var $connected = FALSE;
var $host;
var $user;
var $pswd;
var $dbname;
var $verbindung;
var $sql_query;
var $query_counter;

function mySQL($ID = DB_STANDARD) {
global $mySQL_settings;
$this->host = $mySQL_settings[$ID]['host'];
$this->user = $mySQL_settings[$ID]['user'];
$this->pswd = $mySQL_settings[$ID]['pswd'];
$this->dbname = $mySQL_settings[$ID]['dbname'];
$this->verbindung = @mysql_connect($this->host, $this->user, $this->pswd);
if ($this->verbindung === FALSE) {
$this->error("CONN.OPEN");
}
if (@mysql_select_db($this->dbname, $this->verbindung) === FALSE) {
$this->error("DB.SELECT");
} else {
$this->connected = TRUE;
}
}  
// wenn das Skript nicht mit PHP5 ausgeführt wird, folgende Funktion einfach löschen!
// function __destruct() {
// if (!$this->connected) {
// $this->error("NO CONN");
// } else {
// if (@mysql_close($this->verbindung) === FALSE) {
// $this->error("CONN.CLOSE");
// }
// }
// }

function DBQueries() {
if (!$this->connected) {
$this->error("NO CONN");
} else {
return $this->query_counter;
}
}

function DrawDBQueries() {
if (!$this->connected) {
$this->error("NO CONN");
} else {
if ($this->DBQueries == 1) {
$text = "Es war 1 mySQL-Abfrage nötig";
} else {
$text = "Es waren ".$this->DBQueries." mySQL Abfragen nötig";
}
}
return $text;
}

function query($sql) {
if (!$this->connected) {
$this->error("NO CONN");
} else {
$this->sql_query = $sql;
$this->query_counter++;
$result = @mysql_query($this->sql_query, $this->verbindung);
if ($result === FALSE) {
$this->error("QUERY FAILED");
} else {
return $result;
}
}
}

function select($sql, $anzahl = NULL) {
if (!$this->connected) {
$this->error("NO CONN");
} else {
$result = $this->query($sql);
if ($result !== FALSE) {
$anzahl1 = @mysql_num_rows($result);
$anzahl = $anzahl1;
for($i = 0; $i < $anzahl; $i++) {
$array[$i] = @mysql_fetch_object($result);
}
}
}
return $array;
}

function error($error_type) {
switch ($error_type) {
case 'CONN.OPEN':
$text = "Beim Öffnen der Verbindung ist ein Fehler aufgetreten";
break;

case 'CONN.CLOSE':
$text = "Beim Schließen der Verbindung ist ein Fehler aufgetreten";
break;

case 'NO CONN':
$text = "Die angeforderte Aktion konnte nicht durchgeführt werden, da keine Verbindung zur Datenbank besteht!";
break;

case 'DB.SELECT':
$text = "Beim Auswählen der Datenbank ist ein Fehle aufgetreten. Ev. ist die Datenbank nicht vorhanden";
break;

case 'QUERY FAILED':
$text = "Während folgender Abfrage ist ein Fehler aufgetreten:\n\n".$this->sql_query;
break;

default:
$text = "Es ist folgender, unbekannter Fehler aufgetreten: ".$error_type;
}
if ($this->connected) {
$text .= "\n\nmySQL meldet:\nFehler-Nummer: ".@mysql_errno($this->verbindung)."\nFehler-Beschreibung: ".@mysql_error($this->verbindung);
}
echo $text."\n";
}

}

$sql = new mySQL(); // neue Verbindung
$daten = $sql->select("SELECT * FROM config"); // einfache Abfrage 


echo "Ergebnis: ".$daten->firmenName;




 

?>
 
Zurück