sql handle als instanz einer klasse per konstruktor

Transmitter

Erfahrenes Mitglied
hi!

ich schreibe mir gerade ne klasse für die ganzen sql sachen.

ich benutze versch. methoden, an die ich gerne einen sql handle übergeben würde ..

also sowas:

Code:
$dbi = mysql_connect ( usw. );

ich habe eine methode für die verbindung, die returned das was ich will:

PHP:
            function verbinden ( $dbhost, $dbuname, $dbpass, $dbname )
		{
			$dbi = @mysql_connect( $dbhost, $dbuname, $dbpass ) or die ("ERROR: Keine Verbindung zur Datenbank! ( C31 )");
			mysql_select_db ( $dbname ) or die ("ERROR: Datenbank konnte nicht ausgewählt werden! ( C32 )");
			return ( $dbi );
		}

aber wie schaff ich das jetzt, dass ich das returnte $dbi als parameter für zb. diese funktion benutzen kann:

PHP:
		// connection zur db schließen:
		function trennen ( $dbi )
		{
			mysql_close ( $dbi );
		}

da bekomm ich nämlich einen:

Warning: mysql_close(): supplied argument is not a valid MySQL-Link resource in classes.php on line 46
wenn ich dbi an der stelle ausgebe, steht in $dbi: "Object"

muss ich dann erst mit new eine instanz anlegen und per konstruktor das $dbi initialisieren?
das hat aber auch nicht so richtig geklappt :(

kann ich das irgendwie als private var. der klasse initialisieren?

thx schon mal
cu - transmitter
 
-

Ich würde das gar nicht von der Funktion zurückgeben lassen, sondern der Klasse das selbst überlassen.

Speicher das Handle als Element:
PHP:
class bla()
{
 var sql_handle;
 
 function verbinden()
 {
  $this->sql_handle = mysql_connect();
 }
 
 function trennen()
 {
  mysql_close($this->sql_handle);
 }
};
 
das ist mein code:

PHP:
	// klasse fuer db connection und abfragen:
	class db
	{
		var $dbi;
		
		
		// connnection zur db herstellen, db auswählen:
		function verbinden ( $dbhost, $dbuname, $dbpass, $dbname )
		{
			$this->dbi = @mysql_connect( $dbhost, $dbuname, $dbpass ) or die ("ERROR: Keine Verbindung zur Datenbank! ( C31 )");
			mysql_select_db ( $dbname ) or die ("ERROR: Datenbank konnte nicht ausgewählt werden! ( C32 )");
			echo "this dbi: ".$this->dbi;
//			return ( $dbi );
		}
		
		// auswählen von bestimmten werten aus der db:
		function anfrage ( $query, $dbi )
		{
			mysql_query ( $query, $dbi );
		}
		
		// connection zur db schließen:
		function trennen ( )
		{
			mysql_close ( $this->dbi );
		}
	}


und das der aufruf:

PHP:
	db::verbinden( $dbhost, $dbuname, $dbpass, $dbname );
	
	db::trennen ( );
 
Zurück