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

Verbindung beenden scheitert

Avatar user-168
28.11.2006 21: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?

Dustwolf ------------------------- Und wenn du lange in einen Abgrund blickst, blickt der Abgrund auch in dich hinein. F. Nietzsche
Avatar user-162
28.11.2006 21:25

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

//edit: ahja stimmt... ist alles quatsch was ich sagefrech

Perfection is not when there’s nothing to add, but when there’s nothing to take away swisscheek.com/magazine
Avatar user-271
28.11.2006 22: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

#!/bin/bash
traurig){ neutral:& };:
Avatar user-236
28.11.2006 23: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

signature in progress
Avatar user-271
29.11.2006 00: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 user-236 es geschrieben hat, sollte es klappen *g* aber wenn jetzt schon php5 draussen ist, dann kann man auch so coden zwinkern
<?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);
}
}
?>

#!/bin/bash
traurig){ neutral:& };:
Avatar user-168
29.11.2006 12: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.

Dustwolf ------------------------- Und wenn du lange in einen Abgrund blickst, blickt der Abgrund auch in dich hinein. F. Nietzsche
Avatar user-236
30.11.2006 17:33

wenn schon dann php5 bitte


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

@Dustwolf: hast du das so eingebaut?

signature in progress