mysql.class: Probleme mit DB-Link

Dieses Thema im Forum "Web-Programmierung" wurde erstellt von svenloth, 29.03.2005.

  1. svenloth

    svenloth Thread Starter MacUser Mitglied

    Beiträge:
    167
    Zustimmungen:
    0
    Registriert seit:
    17.09.2004
    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?
     
  2. svenloth

    svenloth Thread Starter MacUser Mitglied

    Beiträge:
    167
    Zustimmungen:
    0
    Registriert seit:
    17.09.2004
    Sorry, alle Tabs sind weg :-( Hoffe es geht noch zu lesen!
     
  3. wegus

    wegus MacUser Mitglied

    Beiträge:
    15.039
    Zustimmungen:
    1.316
    Registriert seit:
    13.09.2004
    @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: 29.03.2005
  4. svenloth

    svenloth Thread Starter MacUser Mitglied

    Beiträge:
    167
    Zustimmungen:
    0
    Registriert seit:
    17.09.2004
    nachdem ich das die() rausgenommen hab klappts. Interessant. Danke für den Tip.
     
  5. wegus

    wegus MacUser Mitglied

    Beiträge:
    15.039
    Zustimmungen:
    1.316
    Registriert seit:
    13.09.2004
    ich hab Dir oben nochmal meine Version in den Beitrag gepostet!
     
Die Seite wird geladen...

Diese Seite empfehlen