( jc – 01.06.2011 12:33)

Redaxo: rex_sql log Funktion

Ausgehend von der log Funktion wie in Anzahl der SQL queries pro Seitenaufruf mitloggen.. beschrieben hier ein erweiterte Variante, die nicht allein die Zahl der queries mitschreibt, sondern auch gleichzeitig auch die queries selbst, die Zahl der resultierenden rows, sowie etwaige Fehlermeldungen im rex_sql object mitprotokolliert.

Der imho springende Punkt, bzw. Vorteil zur einfachen Ausgabe via rex_sql’s debug Funktion: die Ausgabe wird nicht einfach an der Stelle wo sie erfolgt wild (und dadurch oft unbrauchbar) ins HTML der Seite gespuckt, sondern kann gezielt auf der Seite bzw. über ein beliebiges separates GUI ausgegeben werden.. wie z.b. ein eigenes dev-Template, oder FirePHP.

SQL log per FirePHP ausgeben:

Patch @ class.rex_sql.inc.php (aus rex 4.3.2):

### ORIGINAL (Zeile 24ff.)  var $error// Fehlertext
var $errno// Fehlernummer 
/*private*/ function rex_sql($DBID 1)
### PATCH  var $error// Fehlertext
var $errno// Fehlernummer
static $count 0; static $log = array();
/*private*/ function rex_sql($DBID 1)

### ORIGINAL (Zeile 193ff.)  // Alle Werte zurücksetzen
$this->flush(); 
$qry trim($qry);
$this->query $qry
### PATCH  // Alle Werte zurücksetzen
$this->flush(); self::$count++; 
$qry trim($qry); self::$log[self::$count]['query'] = $qry;
$this->query $qry;   

### ORIGINAL (Zeile 226ff.)    }
}
else
{
  
$this->error mysql_error($this->identifier);
  
$this->errno mysql_errno($this->identifier);
### PATCH    self::$log[self::$count]['rows'] = $this->rows;
}
else
{
  
$this->error mysql_error($this->identifier); self::$log[self::$count]['error'] = $this->error;
  
$this->errno mysql_errno($this->identifier); self::$log[self::$count]['errno'] = $this->errno;