#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 + Multi-Zitat Zitieren
#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 + Multi-Zitat Zitieren
#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. + Multi-Zitat Zitieren
#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();? + Multi-Zitat Zitieren
#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 + Multi-Zitat Zitieren
#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. + Multi-Zitat Zitieren
#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 + Multi-Zitat Zitieren
#8 27. April 2009 AW: MySQL Klasse nimm doch mysqli PHP: Einführung - Manual + Multi-Zitat Zitieren
#9 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 ^^ + Multi-Zitat Zitieren
#10 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 + Multi-Zitat Zitieren
#11 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. + Multi-Zitat Zitieren
#12 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 + Multi-Zitat Zitieren
#13 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 + Multi-Zitat Zitieren