Willkommen in der Webstatt Zum Webstatt Blog und Stories
Dustwolf Dustwolf am 28.11.06 22:22

Moin.

Hier ist ein Problem, gegen das ich keine Lösung finde. Und zwar connecte ich innerhalb einer Class zu einer Datenbank und kann dann nciht die Verbindung wieder abbrechen.

if (!$this->db_connection = mysql_connect($server, $user, $passwort))
$this->fehler('Datenbankverbindung gescheitert!', 'Es konnte keine Verbindung zur Datenbank erfolgen. Bitte pruefen Sie die Accountdaten und ob der Server funktioniert.', true);
# Code

if (!mysql_close($this->db_connection))
$this->fehler('Datenbankverbindung beenden gescheitert!', 'Die Datenbankverbindung konnte nicht beendet werden.', true);


Ausgabe:
Warning: mysql_close(): supplied argument is not a valid MySQL-Link resource in C:\Programme\Tools\Webserver\xampp\htdocs\CMS II\objekte\basis.php on line 51


Fehler:
Datenbankverbindung beenden gescheitert!
Die Datenbankverbindung konnte nicht beendet werden.


Wieso speichert er nicht die ID richtig in der Class-Var $db_connection?

netcup.de Warum gibt es hier Werbung?
der_nic der_nic am 28.11.06 22:25

mh zeig mal den Aufbau deiner Classe... darf der Wert überhaupt gesetzt werden? private/public?

//edit: ahja stimmt... ist alles quatsch was ich sage:P

nuit nuit am 28.11.06 23:17

private public hat nichts damit zu tun *g* ich nehme an, das du $db_connection nicht angelegt hast...nicht definiert hast....kann das sein? also dass $this->db_connection das erste auftauchen dieser Variable ist

mab mab am 29.11.06 00:46

Hi,
hast du den connect im konstruktor eingebaut? falls der aufbau der verbindung klappt, sollte das schließen doch auch funktionieren. so in etwa würde ich das machen:

class mysql{

// festgelegt
var $host = "";
var $user = "";
var $pass = "";
var $conid = "";

// an den konstruktor übergeben

function mysql($host, $user, $pass){

$this->host = $host;
$this->user = $user;
$this->pass = $pass;

// verbindung aufbauen
$this->connid = @mysql_connect($this->host, $this->user, $this->pass);

.....
}
}


die verbingung trennst du dann auch einfach in einer methode oder im destruktor...
hoffe, damit kommst du weiter!

Grüße,
mab

nuit nuit am 29.11.06 01:50

wenn schon dann php5 bitte *g*

ausserdem denke ich ist wirklich das problem, dass diese $connid halt nicht gesetzt war....oder wird die automatisch als instanzvariable angelegt, wenn man $this->var schreibt? Also so wie mab es geschrieben hat, sollte es klappen *g* aber wenn jetzt schon php5 draussen ist, dann kann man auch so coden ;)
<?php
class Mysql{

// festgelegt
private $host = "";
private $user = "";
private $pass = "";
private $connid = "";

function __construct ($host, $user, $pass) {

$this->host = $host;
$this->user = $user;
$this->pass = $pass;

$this->connect ($host,$user,$pass);
}

public function connect () {
$this->connid = @mysql_connect ($this->host,$this->user,$this->pass);
}

function __destruct () {
@mysql_close ($this->connid);
}
}
?>

Dustwolf Dustwolf am 29.11.06 13:27

class system {

protected $db_connection;

function __construct(...){
$this->db_connection = mysql_connect(...);
#Code
}
function __destruct(...){
if (!mysql_close($this->db_connection))
$this->fehler('Datenbankverbindung beenden gescheitert!', 'Die Datenbankverbindung konnte nicht beendet werden.', true);
#Code
}
}


So schaut die Klasse verkürzt aus.

mab mab am 30.11.06 18:33

Quote
wenn schon dann php5 bitte


jupp, hast ja recht :) war ein alter Schnipsel und ich sollte die vorzüge von php5 wohl auch mal nutzen ...

@Dustwolf: hast du das so eingebaut?

Creative Commons Lizenzvertrag
Alle Inhalte des Webstatt-Archivs stehen unter einer Creative Commons Namensnennung - Weitergabe unter gleichen Bedingungen 3.0 Unported Lizenz.

Impressum & Kontakt