Hallo Joe,
Wie kann ich jetzt mit den PHP-eigenen mysql-Funktionen herausfinden, ob es sich bei der Abfrage um ein SELECT, INSERT, ... handelt?
Oder ist meine einzige Möglichkeit über String-Funktionen den Abfragestring zu überprüfen?
Entweder machst du das, oder du gibt einfach einen weiteren Parameter an deine Funktion (z. B. einen Parameter $querytype, der eine bestimmte Konstante übergibt, die du natürlich vorher definierst). Das können dann durchaus Zeichenketten sein.
Das fände ich jedenfalls die sinnvollste Variante.
Das könnte dann beispielsweise so aussehen:
// benötigte Konstanten initialisieren
define('MYSQL_QUERYTYPE_SELECT', 0);
define('MYSQL_QUERYTYPE_INSERT', 1);
/**
* Klasse zum speziellen Zugriff auf eine MySQL-Datenbank
*/
class Mysql {
/**
* Führt einen MySQL-Query aus und gibt eventuell vorhandene Resultate zurück
*
* @param $query Der auszuführende MySQL-Query
* @param $querytype Der Typ des MySQL-Querys - wird der Parameter nicht angegeben, wird ein SELECT-Query angenommen
* @return Ergebnis des ausgeführten Querys bei Erfolg
*/
function query($query, $querytype = MYSQL_QUERYTYPE_SELECT) {
switch ($querytype) {
case MYSQL_QUERYTYPE_SELECT:
/* Code einfügen */
break;
case MYSQL_QUERYTYPE_INSERT:
/* Code einfügen */
break;
}
}
}
Aufgerufen werden könnte das Ganze dann beispielsweise so (ich gehe jetzt davon aus, dass die MySQL-Verbindung bereits steht und eine existierende Datenbank ausgewählt wurde - am sinnvollsten macht man dies übrigens im Konstruktor der Mysql-Klasse):
$mysql = new Mysql();
$result = $mysql->query('SELECT id,name,message FROM guestbook');
Dies ist so möglich, weil als Standardwert ein SELECT angenommen wird.
Will man einen INSERT anwenden, so könnte der Aufruf so lauten:
$result = $mysql->query('INSERT ... INTO guestbook', MYSQL_QUERYTYPE_INSERT);
Alles klar? :)
Grüße
Marc Reichelt || http://www.marcreichelt.de/
Linux is like a wigwam - no windows, no gates and an Apache inside!
Selfcode: ie:{ fl:| br:> va:} ls:< fo:} rl:( n4:( ss:) de:> js:| ch:? sh:| mo:) zu:)
http://emmanuel.dammerer.at/selfcode.html