Servus Zusammen,
ich persönlich bin nicht der größte Fan von Frameworks wie Laravel, Zend usw.. das hat verschiedene Gründe, aber das ist nicht die Plattform um darüber zu diskutieren - v.a. finde ich Frameworks nicht grundsätzlich und nicht immer schlecht bzw. gut - kommt immer auf die Situation an.
Für kleinere Geschichten, Miniprojekte etc. habe ich ein eigenes Mini-Framework, das aus verschiedenen Klassensammlungen etc. besteht.
Diese Klassen werden immernoch erweitert, wenn es oft wiederkehrende Fälle gibt.
Lange Rede kurzer Sinn - für alle die sich bei Datenbankabfragen gerne etwas Zeit sparen möchten, jedoch nicht vollkommen die Syntax verändert wollen:
Installation:
In einer separaten Datei settings / config oder sonstwie habe ich die Variablen, die für die function __construct benötigt werden. Ihr könnt das natürlich abändern, wenn ihr nur diese Klasse verwenden möchtet. Aus Gründen den Bequemlichkeit habe ich die Konstanten aller Klassen in einer Datei zusammengefasst.
Verwendung:
Ihr könnt es nutzen, auseinandernehmen und v.a. und gerne kritisieren und verbessern, wenn ihr es für total schrecklich haltet.
Liebe Grüße
Max
ich persönlich bin nicht der größte Fan von Frameworks wie Laravel, Zend usw.. das hat verschiedene Gründe, aber das ist nicht die Plattform um darüber zu diskutieren - v.a. finde ich Frameworks nicht grundsätzlich und nicht immer schlecht bzw. gut - kommt immer auf die Situation an.
Für kleinere Geschichten, Miniprojekte etc. habe ich ein eigenes Mini-Framework, das aus verschiedenen Klassensammlungen etc. besteht.
Diese Klassen werden immernoch erweitert, wenn es oft wiederkehrende Fälle gibt.
Lange Rede kurzer Sinn - für alle die sich bei Datenbankabfragen gerne etwas Zeit sparen möchten, jedoch nicht vollkommen die Syntax verändert wollen:
PHP-Code:
class dbo {
private $connection;
//Bisher erfolgt bei mir Logging noch anderweitig - könnt es natürlich selber gerne einbauen.
private $logging = 0;
function __construct() {
// Ich habe diese Variablen ausgelagert. Das könnt ihr natürlich handhaben wie ihr wollt, oder sie hier selber setzen.
global $db_server;
global $db_user;
global $db_pass;
global $db_name;
$this->connection = mysqli_connect($db_server, $db_user, $db_pass) or die ("Keine Verbindung zum SQL-Server");
mysqli_select_db($this->connection, $db_name) or die ("Gewünschte Datenbank nicht verfügbar");
}
function count($string) {
$qry = mysqli_query($this->connection, $string) or die(mysqli_error($this->connection));
return mysqli_num_rows($qry);
}
function query($string) {
$qry = mysqli_query($this->connection, $string) or die(mysqli_error($this->connection));
return $qry;
}
function select_array($string) {
$qry = mysqli_query($this->connection, $string) or die(mysqli_error($this->connection));
$result = array();
while ($rows = mysqli_fetch_array($qry)) {
$result[] = $rows;
}
return $result;
}
function select_assoc($string) {
$qry = mysqli_query($this->connection, $string) or die(mysqli_error($this->connection));
$result = array();
while ($rows = mysqli_fetch_assoc($qry)) {
$result[] = $rows;
}
return $result;
}
function select_row($string) {
$qry = $this->select_array($string);
if (!empty($qry)) {
$res = $qry[0];}
else {return false;}
return $res;
}
function update($string) {
$qry = mysqli_query($this->connection, $string) or die(mysqli_error($this->connection));
}
function insert($string) {
$qry = mysqli_query($this->connection, $string) or die(mysqli_error($this->connection));
return mysqli_insert_id($this->connection);
}
function select_col($string) {
$qry = $this->select_row($string);
$res = $qry[0];
return $res;
}
function save($table, $values, $where) {
// $table = Tabellenname
// $values = Array mit Feldname -> Wert (Wert wird escaped)
// $where = Bedingung ohne WHERE, z.B. 'id = 1'
// Anwendungsbeispiel - <form> mit <input name="db[feldname]"> und dann $_POST['db'] übergeben. Vorsicht! Feldnamen könnten
// manipuliert werden. Sicherheitslücke.
// Todo: Ggf. zweites Sicherheitsarray anbieten, das mit Feldnamen verglichen wird und manuell bestückt werden muss.
$sql = 'UPDATE '.$table.' SET ';
$len = count($values);
$i = 0;
foreach ($values as $key => $value) {
$i++;
$sql .= $key." = '".mysql_real_escape_string($value)."'";
if ($i < $len) {$sql .= ', ';}
}
$sql .= ' WHERE '.$where;
$this->update($sql);
}
function __destruct() {
mysqli_close($this->connection);
}
}
?>
In einer separaten Datei settings / config oder sonstwie habe ich die Variablen, die für die function __construct benötigt werden. Ihr könnt das natürlich abändern, wenn ihr nur diese Klasse verwenden möchtet. Aus Gründen den Bequemlichkeit habe ich die Konstanten aller Klassen in einer Datei zusammengefasst.
Verwendung:
PHP-Code:
$qry = new dbo;
// Eine Beispiel-Query
$sql = "SELECT * FROM table"
$result = $qry->select_array($sql);
// gibt ein Array zurück (mysqli_fetch_array)
$result = $qry->select_assoc($sql);
// s.o. - nur assoziatives Array (mysqli_fetch_assoc)
$result = $qry->select_row($sql);
// ist nicht ganz wie mysqli_fetch_row - es ist die erste Zeile von mysqli_fetch_array - ganz einfach, damit ich auf die Feldnamen auch mit $result['feldname'] anstatt $result[0] zugreifen kann (gut, wenn sich die query ändert)
$qry->query($sql);
// Führt einfach die query aus
$result = $qry->count($sql);
// Gibt die Anzahl Zeilen zurück
$result = $qry->update($sql);
//Macht eigentlich das gleiche wir $qry->query($sql) - nur besser zum lesen später.
$result = $qry->insert($sql);
// Gibt die mysqli_insert_id der eingefügten Zeile zurück
$result = $qry->select_col("SELECT name FROM table WHERE id = 1");
// Gibt direkt den Inhalt des Feldes zurück.
$qry->save($table, $values, $where);
// Scheint eventuell seltsam und siehe Kommentare - nicht sicher, aber praktisch :)
// $table = Tabellenname
// $values = Array (feldname => zu_speichernder_inhalt)
// $where = "id = 1"
// Wird genutzt, um z.B. einzelne Zeilen zu bearbeiten, aus Formularen.
Liebe Grüße
Max
Kommentar