BartTheDevil89
Devilution Media
- 2 Mai 2006
- 3.960
- 103
Hallo,
also habe mir in letzter Zeit mal die MySQL-Klassen so angeschaut und für meine Page mir jetzt eine eigene erstellt. Ist zwar nur ne recht einfache, aber für den Einsatz gut geeignet. Meine class schaut wie folgt aus:
Also damit sollte eigentlich alles abgedeckt sein, was so an SQL-Queries auf mich zukommt. Habe mir dazu auch die passende index-Datei erstellt, die mir alle Möglichkeiten von Abfragne mal auflistet. (durch $action ==... getrennt um es einfacher testen zu können)
Jetzt kommt allerdings die Frage: Was haltet ihr von? Und vor allem fehlt natürlich bisschen was. Also was auf jedenfall noch rein muss ist eine Fehlerausgabesystem...also sollte wirklich mal ein Fehler auftreten, dass der dann in ner einfachen Form ausgeben wird. Allerdings hat es an der Stelle dann bei mir aufgehört, wie ich das einbauen kann. Also wie schaffe ich es da ne Fehlermeldung ala: "Fehler! Die Abfrage:...(wäre ja $value), Server meldet:....)" noch mit reinkommt?
Natürlich hätte ich auch gern in dieser Query die Daten vor sql-injections geschützt, aber mit dem $value ist das nicht möglich oder hab ich was übersehen? Hatte es vorher, dass ich versucht habe die where-Daten, die Insert-Daten, etc... alles mit ner extra variable an die Funktion zu übergeben, sodass ich ja dan mysql_escape_real_string anwenden hätte können, aber das ist bei den komplexen Abfragen und vor allem anderswertigen Abfragen über diese Query einfach nicht möglich.
Hab ich sonst noch was vergessen, bzw. kann ich sonst noch irgendwas gutes mit einbauen? Und hab ich irgendwie ne Abfrageart vergessen?
Danke für die Hilfe und fürs Drüberschauen
also habe mir in letzter Zeit mal die MySQL-Klassen so angeschaut und für meine Page mir jetzt eine eigene erstellt. Ist zwar nur ne recht einfache, aber für den Einsatz gut geeignet. Meine class schaut wie folgt aus:
PHP:
<?
class db{
var $_dbHost = "localhost";
var $_dbDatabase = "";
var $_dbUsername = "";
var $_dbPassword = "";
var $_dbcon = NULL;
function start()
{
$this->_dbcon = mysql_connect( $this->_dbHost, $this->_dbUsername, $this->_dbPassword );
mysql_select_db( $this->_dbDatabase, $this->_dbcon );
}
function close() {
mysql_close($this->_dbcon);
}
function last(){ //letzte id wird geladen und zurückgegeben
return mysql_insert_id($this->_dbcon);
}
function query($value){ //Einfache Abfrage für Insert, Update
return mysql_query($value, $this->_dbcon);
}
function anzahl($value){ //Anzahl von Einträgen
return mysql_num_rows(mysql_query($value, $this->_dbcon));
}
function data($value){ //Daten für einen Eintrag
return mysql_fetch_array(mysql_query($value, $this->_dbcon));
}
}
?>
Also damit sollte eigentlich alles abgedeckt sein, was so an SQL-Queries auf mich zukommt. Habe mir dazu auch die passende index-Datei erstellt, die mir alle Möglichkeiten von Abfragne mal auflistet. (durch $action ==... getrennt um es einfacher testen zu können)
PHP:
<?
include("class.mySQL.php");
$db = new db();
$db->start();
$action = $_GET['action'];
if($action == "insert"){ //Insert-Befehle
$db->query("insert into table set name = 'TEST2'");
$lastid = $db->last(); //Insert-ID wird geladen
echo "ID $lastid wurde erstellt...";
}
if($action == "update"){ //Updatebefehl
$db->query("update table set name = 'TEST' where lft = '1' and rgt='2'");
}
if($action == "anzahl"){//Anzahl an Einträgen
$eintragsanzahl = $db->anzahl("Select * from table where id = '1'");
echo "Es wurden $eintragsanzahl gefunden...";
}
if($action == "list"){ //Auflisten einer DB
$result = $db->query("Select * from table");
while($bit = mysql_fetch_array($result)){
$id = $bit['id'];
echo "ID $id wird geladen...<br>";
}
}
if($action == "show"){//Ein spezieller Datensatz wird geladen
$data = $db->data("Select * from table where id = '1'");
echo "$data[name] geladen...";
}
$db->close();
?>
Jetzt kommt allerdings die Frage: Was haltet ihr von? Und vor allem fehlt natürlich bisschen was. Also was auf jedenfall noch rein muss ist eine Fehlerausgabesystem...also sollte wirklich mal ein Fehler auftreten, dass der dann in ner einfachen Form ausgeben wird. Allerdings hat es an der Stelle dann bei mir aufgehört, wie ich das einbauen kann. Also wie schaffe ich es da ne Fehlermeldung ala: "Fehler! Die Abfrage:...(wäre ja $value), Server meldet:....)" noch mit reinkommt?
Natürlich hätte ich auch gern in dieser Query die Daten vor sql-injections geschützt, aber mit dem $value ist das nicht möglich oder hab ich was übersehen? Hatte es vorher, dass ich versucht habe die where-Daten, die Insert-Daten, etc... alles mit ner extra variable an die Funktion zu übergeben, sodass ich ja dan mysql_escape_real_string anwenden hätte können, aber das ist bei den komplexen Abfragen und vor allem anderswertigen Abfragen über diese Query einfach nicht möglich.
Hab ich sonst noch was vergessen, bzw. kann ich sonst noch irgendwas gutes mit einbauen? Und hab ich irgendwie ne Abfrageart vergessen?
Danke für die Hilfe und fürs Drüberschauen
...danke. Hätt ich eigentlich auch selbst draufkommen können, dass ich das einfache teile. Damit läuft es jetzt: