mysql.class: Probleme mit DB-Link

svenloth

svenloth

Aktives Mitglied
Thread Starter
Dabei seit
17.09.2004
Beiträge
166
Reaktionspunkte
0
Hi,

ich habe eine mysql-Klasse geschrieben.

Wenn ich nun ein Query absetzen will, connectet die auch brav, bei einem der Funktion query() gibts aber folgenden Fehler:

Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource in /usr/local/apache/htdocs/mysql.class on line 65

Irgendwie geht der Link in $this->mylink verloren. In allen Beispielen die ich im Netz gefunden habe, wirds aber genauso gemacht. Wo ist mein Fehler?

Code:
<?php



	
	class Mysql {
	
		var $sql;
		var $result;
		var $value;
		var $row;
		var $col;
		var $mylink;

		
		
		function Mysql() {
			
			$this->mylink 			= 0;
			$this->db_server		= "localhost";
			$this->db_user 			= "user";
			$this->db_password 		= "pass";
			$this->db_database		= "db";
			
		}
	
		function connect() {
		
		
			$this->mylink = mysql_connect($this->db_server,$this->db_user,$this->db_password)
							|| die("Keine Verbindung zur Datenbank m&ouml;glich!");
							
						  mysql_select_db($this->db_database) || die ("DB not found!");
		}
		
		
		function close() {
		
			if (! $this->mylink)
				Print "Schliessen der Datenbankverbindung nicht n&ouml;tig!";
			else
				mysql_close($this->mylink);				
		
		}
		
			
		function num_rows() {
		
			if (! $this->mylink)
				Print "Es besteht keine Datenbankverbindung!";
			else {	
				$this->my_rows = mysql_num_rows($this->result);
				return $this->my_rows;
			}		
		}
	
		function query($sql) {
			
			if (! $sql)
				Print "Kein SQL &uuml;bergeben!";
			else if (! $this->mylink)
				Print "Es besteht keine Datenbankverbindung!";
			else {
				$this->sql = $sql;
				$result = mysql_query($this->sql, $this->mylink);
			
			
				if (isset($result)) {
					$this->result = $result;
					return $this->result;
				} else {
					$this->result = FALSE;
					return $this->result;
				}
			}
		}
		
		function result($row,$col) {
	
			if (! $this->mylink)
				Print "Es besteht keine Datenbankverbindung!";
			else {	
				$this->row = $row;
				$this->col = $col;
				
				$value = mysql_result($this->result,$this->row,$this->col);
				
				if (isset($value)) {
					$this->value = $value;
					return $this->value;
				} else {
					$this->value = FALSE;
					return $this->value;
				}	
			}
		}
		
		
	} // end class
		
		
?>

und das php dazu:

Code:
<?php
		
	include("mysql.class");
	
	$mydb = new Mysql;
	
	$mydb->connect();
	
	$mydb->query("select * from test");
	
	$numrows = $mydb->num_rows();
	
	print $numrows;
	
?>

Wahrscheinlich ein ganz dummer Fehler ;) Wer kann mir helfen?
 
Sorry, alle Tabs sind weg :-( Hoffe es geht noch zu lesen!
 
@svenloth:
versuch mal die Forumstags

<php>

</php>

nat. mit eckigen Klammern. Dann hast Du auch Syntax-Highlighting! Auf den ersten Blick:

Die Frage ist, ob Du eine gültige Verbindung nach dem ->connect() erhalten hast! ich würd einfach den link zuweisen. Das die() streichen, Deine Klasse soll ja arbeiten und keinen Text ausgeben. Stattdessen würd ich connect() abhängig von $this->mylink mit true/false beenden. Dann kannst Du im Hauptprogramm schreiben:

PHP:
.
.
.
// Klassenmethode
function connect() 
{
$this->mylink = mysql_connect($this->db_server,$this->db_user,$this->db_password);
if ($this->mylink==0)
  return false; // Keinen link erhalten ==> Abbruch
if ($this->db_database=="")
 return false; // ==> Kein DB angegeben, Abbruch
return mysql_select_db($this->db_database, $this->mylink);
}

.
.
.
// Dein Hauptprogramm außerhalb der Klasse:
if (! $mydb->connect())
{
 print "Zur Zeit besteht keine Verbindung zum DB-Server";
 exit;
}
 
Zuletzt bearbeitet:
nachdem ich das die() rausgenommen hab klappts. Interessant. Danke für den Tip.
 
ich hab Dir oben nochmal meine Version in den Beitrag gepostet!
 
Zurück
Oben Unten