[PHP] MySQL Klasse

Dieses Thema im Forum "Webentwicklung" wurde erstellt von Ragnaroek, 1. August 2008 .

Schlagworte:
  1. 1. August 2008
    MySQL Klasse

    hallo,

    habe meine ersten schritte im Klasse schreiben gemacht mit PHP.

    Habe eine MySQL Klasse angefertigt und najo ..^^

    wollte die mal posten, damit ich ein kleines feedback bekomme... =)

    die classe:
    PHP:
    <?
    error_reporting ( E_ALL );

    class 
    connect
    {
        
    #Daten zur Datenbank:
        
    var  $host  "localhost" ;     #Mysql-Host eintragen - normal "localhost"
        
    var  $user  "root" ;          #Benutzer der Mysql-Datenbank angeben
        
    var  $pass  "" ;                 #Passwort des Mysql-Benutzers
        
    var  $db  "script" ;             #Name der Datenbank angeben
        
    var  $tabelle ;                 #Speicher für die Tabelle
        
        #Variablen die später notwendig sind! Nicht umbenennen!
        
    var  $anz ;                     #Anzahl der Datensätze
        
    var  $status  FALSE ;         #Statusvariabel -> false = Verbindung geschlossen
        
    var  $query ;                     #zum Ausführen der MySQL Anweisungen


        #Beginn der Funktionen!    
        
    function  verbinden ()
        {
            if(!
    mysql_connect ( $this -> host $this -> user $this -> pass ))
            {
                
    #Fehlerausgabe!
                
    echo  "MySQL-Server konnte nicht erreicht werden!<br>
                      <b>Host:</b> "
    . $this -> host . "<br>
                      <b>User:</b> "
    . $this -> user . "<br>
                      <b>Passwort:</b> "
    . $this -> pass . "<br><br>
                      Bitte überprüfen Sie Ihre MySQL-Daten auf deren Richtigkeit!"
    ;
            }
            
    #Verbindung zum MySQL-Server war erfolgreich!
            
    else
            {
                if(!
    mysql_select_db ( $this -> db ))
                {
                    
    #Fehlerausgabe!
                    
    echo  "Datenbank konnte nicht erreicht werden!<br>
                          <b>Datenbankname:</b> "
    . $this -> db . "<br><br>
                          Bitte überprüfen Sie die Schreibweise des Datenbanknamens auf seine Richtigkeit!"
    ;
                }
                
    #Verbindung zur Datenbank war erfolgreich!
                
    else
                {
                    
    $this -> status  TRUE ;        
                }
            }
        }
        
    #Select: Mit dieser Funktion werden Datensätze aus einer Tabelle gelesen!
        
    function  sel ( $sql )
        {
            
    #Verbindung aufbauen
            
    $this -> verbinden ();
            
    #Query ausfühen des SQL-Statements
            
    $this -> query  mysql_query ( $sql );
            
    #Anzahl der Datensätze zählen - wird fürs Speichern im Array benötigt
            
    $this -> anz  mysql_num_rows ( $this -> select );
            
            if(
    $this -> anz  0 )
            {
                for(
    $i = 0 $this -> anz  $i $i ++)
                {
                    
    #Speichern der Resultate
                    
    $resultat [ $i ] =  mysql_fetch_array ( $this -> query );
                }
            }
            else
            {
                
    #False = keine Datensätze vorhanden!
                
    return  FALSE ;
            }
            
    #Gibt die Werte zurück
            
    return  $resultat ;
        }
        
    #Insert: Mit dieser Funktion kann man Datensätze in die Datenbank schreiben lassen    
        
    function  ins ( $sql )
        {
            
    #Verbindung aufbauen
            
    $this -> verbinden ();
            
    #Query ausfühen des SQL-Statements
            
    $this -> query  mysql_query ( $sql );
            
            
    #mysql_query liefert TRUE bei Erfolg zurück
            
    if( $this -> query  ==  TRUE )
            {
                
    #Daten wurden erfolgreich gespeichert
                
    return  TRUE ;
            }
            else
            {
                
    #Es ist ein Fehler aufgetreten!
                
    return  mysql_error ();
            }
        }
        
    #Delete: Mit dieser Funktion werden Datensätze gelöscht
        
    function  del ( $sql )
        {
            
    #Verbindung aufbauen
            
    $this -> verbinden ();
            
    #Query ausfühen des SQL-Statements
            
    $this -> query  mysql_query ( $sql );
            
            
    #mysql_query liefert TRUE bei Erfolg zurück
            
    if( $this -> query  ==  TRUE )
            {
                
    #Daten wurden erfolgreich gespeichert
                
    return  TRUE ;
            }
            else
            {
                
    #Es ist ein Fehler aufgetreten!
                
    return  mysql_error ();
            }
        }

    #Update: Mit dieser Funktion werden Datensätze bearbeitet und gespeichert
        
    function  upt ( $sql )
        {
            
    $this -> verbinden ();
        }
    #Mit dieser Funktion wird die Anzahl der Datensätze festgestellt.
        
    function  num_rows ( $sql )
        {
        }
    }
    ?>
    select.php
    PHP:
    <?
    require_once(
    "inc/class_mysql.php" );

    $db  = new  connect ();

    $sql  "SELECT * FROM branche" ;

    $res  $db -> sel ( $sql );

    if(
    $res  !=  FALSE )
    {
        for(
    $i = 0 $i  < count ( $res );  $i ++)
        {
            echo 
    $res [ $i ][ 0 ]. " - <b>" . $res [ $i ][ 1 ]. "</b><br>" . $res [ $i ][ 2 ]. "<br>" ;
        }
    }
    else
    {
        echo 
    "Keine Datensätze vorhanden" ;
    }

    #auch möglich - jedoch keine Ausgabe, wenn keine Datensätze vorhanden sind (lediglich -)
    #    for($i=0; $i <count($res); $i++)
    #    {
    #        echo $res[$i][0]." - <b>".$res[$i][1]."</b><br>".$res[$i][2]."<br>";
    #    }
    ?>
    insert.php
    PHP:
    <?
    require_once(
    "inc/class_mysql.php" );

    $db  = new  connect ();

    #Daten können aus einem Formular oder so kommen!

    $benutzer  "stefan" ;
    $passwort  "nixda" ;

    $sql  "INSERT INTO `admin` ( `idAdmin` , `Benutzer` , `Passwort` )
            VALUES ( NULL , '
    $benutzer ', ' $passwort ' )" ;

    $do  $db -> ins ( $sql );

    if(
    $do  ==  TRUE )
    {
        echo 
    'Ihr Datensatz wurde erfolgreich eingetragen!<br>
             <b>Benutzer:</b> '
    . $benutzer . '<br>
             <b>Passwort:</b> '
    . $passwort ;
    }
    else
    {
        echo 
    'Es ist ein Fehler beim Speichern des Datensatzes aufgetreten!<br><b>Fehlermeldung:</b> ' . $do ;         
    }

    ?>
    delete.php
    PHP:
    <?
    require_once(
    "inc/class_mysql.php" );

    $db  = new  connect ();

    #Wird normal aus einem Formular übernommen...
    $id  1 ;

    $sql  "DELETE FROM `admin` WHERE `idAdmin` = '" . $id . "'" ;

    $do  $db -> ins ( $sql );

    if(
    $do  ==  TRUE )
    {
        echo 
    'Ihr Datensatz wurde erfolgreich gelöscht!' ;
    }
    else
    {
        echo 
    'Es ist ein Fehler beim Löschen des Datensatzes aufgetreten!<br><b>Fehlermeldung:</b> ' . $do ;         
    }
    ?>
    update.php
    PHP:
    <?
    require_once(
    "inc/class_mysql.php" );

    $db  = new  connect ();

    #Wird normal aus einem Formular übernommen...
    $id  1 ;
    $benutzer  "wusel" ;
    $passwort  "allesklar" ;

    $sql  "UPDATE `admin` SET `Benutzer` = '" . $benutzer . "',
            `Passwort` = '"
    . $passwort . "' WHERE `idAdmin` = '" . $id . "'" ;
            
    $do  $db -> ins ( $sql );

    if(
    $do  ==  TRUE )
    {
        echo 
    'Ihr Datensatz wurde erfolgreich bearbeitet!' ;
    }
    else
    {
        echo 
    'Es ist ein Fehler beim Editieren des Datensatzes aufgetreten!<br><b>Fehlermeldung:</b> ' . $do ;         
    }
    ?>
    bei insert, delete und updaten würden die Daten natürlich aus formularen kommen^^

    freue mich über eure kommentare
     
  2. 1. August 2008
    AW: MySQL Klasse

    hi, du solltest wissen das man sich nur ein einziges mal mit dem mysql-server verbinden muss.
    du verbindest dich bei jedem query^^

    ansonsten schau dir mal php5 an und programmier lieber gleich richtig oo
     
  3. 1. August 2008
    AW: MySQL Klasse

    PHP:
                 echo  "MySQL-Server konnte nicht erreicht werden!<br> 
                      <b>Host:</b> "
    . $this -> host . "<br> 
                      <b>User:</b> "
    . $this -> user . "<br> 
                      <b>Passwort:</b> "
    . $this -> pass . "<br><br> 
                      Bitte überprüfen Sie Ihre MySQL-Daten auf deren Richtigkeit!"
    ;
    Ich würd ja nicht das MySQL Passwort ausgeben... so sieht doch jeder User wenn's Serverprobleme gibt die Logindaten. :L
    btw, PHP5 ftw.
     
  4. 2. August 2008
    AW: MySQL Klasse

    hehe joa =)


    najo das mit der verbindung habe ich gemacht, weil wenn ich die nicht aufrufe, klappt es irgendwie nicht den query durchzuführen...?

    nachtrag:

    wenn ich die function verbinden() in function connect umbenenne... dann wäre das ganze ja der konstruktor und würde automatisch ausgeführt werden, wenn die klasse aufgerufen wird mit $db = new connect();?
     
  5. 16. August 2008
    AW: MySQL Klasse

    Bisl spät aber besser als nie:

    Speicher das Ergebnis deiner Verbindung in einer Variable

    Hier mal nen Auszug aus meiner Klasse als anhaltspunkt für dich:

    Verbindungsaufbau
    PHP:
                     if(! $this -> connect  mysql_connect ( DB_HOST DB_USER DB_PASS )) {  // mysql_connect
                            
    return  false ;
                    }
                    
                    return 
    $this -> connect ;    

    Db-select
    PHP:
                     if(! $selectDB  mysql_select_db ( DB_SELECT $this -> connect )) {  // mysql_select_db
                            
    return  false ;
                    }


    Et voila
    PHP:
             function  query ( $select )
            {
                    
                    if(!
    $qry  mysql_query ( $select )) {
                            return 
    false // Später mit Fehlermeldung
                    
    } else {
                            return 
    $qry ;
                    }
            }

    Schon brauchst du das nichtmehr machen mit einer Verbindung
     
  6. 16. August 2008
    AW: MySQL Klasse

    anfang ist ja schonmal nicht schlecht. aber wie wäre es mal die datenbank zu schließen?

    bzw. es gibt doch Pakete bei PEAR die für das Datenbankhandling verantwortlich sind.
     
  7. 27. April 2009
    MySQL Klasse

    Hi, habe jetzt schon ein wenig bei Google gesucht, aber irgendwie finde ich nicht das richtige, unzwar suche ich eine gute MySQL Klasse mit ner Dokumentation bei.

    MfG
    Jan225
     
  8. 27. April 2009
    AW: MySQL Klasse

    Hab selber mal eine geschrieben.
    Ist aber nur ne ganz kleine mit den wichtigsten Funktionen.

    Wenn du sie willst sags einfach ^^
     
  9. 27. April 2009
    AW: MySQL Klasse

    Wie ich die Doku verstanden habt muss man mysqli auf den webservern aktivieren oder sowas in der art. Da ich das Script aber später weitergebe, bräuchte ich ne Klasse in PHP geschrieben

    @xxx666: wär nett wenn du sie mir geben würdest
     
  10. 27. April 2009
    AW: MySQL Klasse

    mysqli gibt es seit PHP5 und ist (meines Wissens) meistens aktiviert.

    Will dich, xxx666, nicht persönlich angreifen - aber ich denke, wenn man eine reguläre MySQL-Klasse sucht, ist unter PHP5 aktuell eine der besten Möglichkeiten in Punkto usability, Sicherheit, etc.
     
  11. 27. April 2009
    AW: MySQL Klasse

    nimm mysqli wie mein vorredner schon empfohlen hat. benutze es in meinem neuen cms auch und ist einfach das beste!

    und das ganze ist schon oop aufgebaut, d.h. du hast quasi direkt eine mysqli klasse ,)

    zum einarbeiten habe ich mit diesem kleinen workshop damals angefangen:

    Einführung in die MySQLi-Erweiterung von PHP 5

    MFg
     
  12. 28. April 2009
    AW: MySQL Klasse

    Mein Favorit ist Doctine... ist zwar etwas "aufgebläht", aber dafür mit umfangreichen und nützlichen Features ausgerüstet - eine gewisse Einarbeitungszeit musst du aber einplanen, du wirst es aber nicht bereuen. http://www.doctrine-project.org/

    Wenn du etwas leichtgewichtigeres brauchst, ist die Zend_Db-Komponente aus dem Zend Framework nicht so schlecht. http://framework.zend.com/manual/de/zend.db.html http://framework.zend.com

    MfG Chronos
     
  13. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.