mysql.class: Probleme mit DB-Link

Diskutiere das Thema mysql.class: Probleme mit DB-Link im Forum Web-Programmierung

  1. svenloth

    svenloth Thread Starter Mitglied

    Beiträge:
    166
    Zustimmungen:
    0
    Mitglied 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 Mitglied

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

    wegus Mitglied

    Beiträge:
    16.038
    Zustimmungen:
    2.605
    Mitglied 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;
    }
     
  4. svenloth

    svenloth Thread Starter Mitglied

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

    wegus Mitglied

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

MacUser.de weiterempfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Akzeptieren Weitere Informationen...