Juhuu,
seit langen habe ich mich mal wieder mit PHP beschäftigt. Ich habe schon früher versuchst mit Klassen und Objekten etwas anzufangen, aber so richtig kam ich nie dazu. Ich habe mich an einer MySQL Klasse versucht und ich würde gern hören was ihr dazu sagt.
Vor allem in Puntko Syntax in Klassen und Methoden bin ich mir noch nicht so sicher und bräuchte da noch Hilfe.
Das wichtigste an der Klasse war mir eigentlich das Error-Handling. Wie ihr seht ist dort fast alles möglich.
Der Code ist denke ich so überschaulich, das er erstmal ohne Dokumentation auskommt.
Tipps und Ideen zur Erweiterung sind gern gesehn
Gruß soyo
seit langen habe ich mich mal wieder mit PHP beschäftigt. Ich habe schon früher versuchst mit Klassen und Objekten etwas anzufangen, aber so richtig kam ich nie dazu. Ich habe mich an einer MySQL Klasse versucht und ich würde gern hören was ihr dazu sagt.
Vor allem in Puntko Syntax in Klassen und Methoden bin ich mir noch nicht so sicher und bräuchte da noch Hilfe.
Das wichtigste an der Klasse war mir eigentlich das Error-Handling. Wie ihr seht ist dort fast alles möglich.
Der Code ist denke ich so überschaulich, das er erstmal ohne Dokumentation auskommt.
PHP:
<?php
error_reporting(0);
define ("ADMIN_MAILADRESS", "user@host.com");
define ("MYSQL_HOST", "localhost");
define ("MYSQL_USER", "root");
define ("MYSQL_PASSWORD", "");
define ("MYSQL_DB", "");
define ("MYSQL_ERROR_DISPLAY", 2);
define ("MYSQL_ERROR_TO_FILE", 1);
define ("MYSQL_ERROR_FILEPATH", "../../errorlogs/mysql.log");
define ("MYSQL_ERROR_TO_MAIL", 0);
class mysql {
var $_conn_id = "";
var $_result = "";
var $_errno = 0;
var $_error = "";
var $_app_name = "";
var $_message = "";
var $_sql = "";
function __construct($host,$user,$password){
if(!$this->_conn_id = mysql_connect($host, $user, $password)){
$this->getError();
} else {
return $this->_conn_id;
}
}
function selectDB($db){
if (!mysql_select_db($db, $this->_conn_id)){
$this->getError();
}
}
function setAppName($appName){
if(!isset($appName)){
$this->_app_name = "na";
} else {
$this->_app_name = $appName;
}
}
function query($sql,$escape){
if($escape == 1) $this->_sql = mysql_real_escape_string($sql);
else $this->_sql = $sql;
if(!$this->_result = mysql_query($this->_sql)){
$this->getError();
} else {
return $this->_result;
}
}
function error(){
$tmp = $this->_result;
$tmp = (bool)$tmp;
$tmp = !$tmp;
return $tmp;
}
function getError(){
$mailMes = "";
$errMess = "";
if($this->error()){
$this->_errno = mysql_errno();
$this->_error = mysql_error();
if(MYSQL_ERROR_TO_MAIL == 1){
$mailMes = "MySQL ERROR Occured ERROR";
$mailMes .= "=================================================================";
$mailMes .= " DATE: ".date("d.m.Y - H:i")."\n";
$mailMes .= " APPLICATION: ".$this->_app_name."\n";
$mailMes .= " AFFECTED SERVER: ".$_SERVER['HTTP_HOST']."(".$_SERVER['SERVER_ADDR'].")\n";
$mailMes .= " PHP SCRIPT: ".$_SERVER['SCRIPT_FILENAME']."\n";
$mailMes .= "SQL ERROR MESSAGE: ".$this->_error."\n";
$mailMes .= " SQL ERROR CODE: ".$this->_errno."\n";
$mailMes .= " SQL QUERY: ".$this->_sql."\n";
$mailHeader = "Content-Type: text/plain; charset=iso-8859-1\r\n";
$mailHeader .= "Content-Transfer-Encoding: 8bit";
@mail(ADMIN_MAILADRESS,'MySQL ERROR Occured on'.$_SERVER['HTTP_HOST'],$mailMes,$mailHeader);
}
if(MYSQL_ERROR_TO_FILE == 1){
$errMess .= " DATE: ".date("d.m.Y - H:i")."\n";
$errMess .= " APPLICATION: ".$this->_app_name."\n";
$errMess .= " PHP SCRIPT: ".$_SERVER['SCRIPT_FILENAME']."\n";
$errMess .= "SQL ERROR MESSAGE: ".$this->_error."\n";
$errMess .= " SQL ERROR CODE: ".$this->_errno."\n";
$errMess .= " SQL Query:".$this->_sql."\n";
$errMess .= "=================================================================\n";
if (is_writable(MYSQL_ERROR_FILEPATH)) {
if($handle = fopen(MYSQL_ERROR_FILEPATH, "a")) {
fputs($handle,$errMess);
fclose($handle);
}
}
}
switch(MYSQL_ERROR_DISPLAY){
case 1:
echo "Database Error occured!<br>";
break;
case 2:
echo "<b>".$this->_errno."</b> - ".$this->_app_name." - ".$this->_error."<br>";
echo "<pre>".$this->_sql."</pre>";
echo "<hr>";
break;
}
}
}
function fetchArray(){
if($this->error()){
$this->getError();
$return = null;
} else {
$return = mysql_fetch_assoc($this->_result);
}
return $return;
}
function fetchValue($table, $field, $value, $returnfield){
$value = mysql_real_escape_string($value);
if(!$this->_result = mysql_query("SELECT ".$field.", ".$returnfield." FROM ".$table." WHERE ".$field." = '".$value."'")){
$this->getError();
$return = null;
} else {
$return = mysql_fetch_assoc($this->_result);
$return = $return[$returnfield];
}
return $return;
}
function fetchRow($table, $field, $vaule){
$value = mysql_real_escape_string($value);
if(!$this->_result = mysql_query("SELECT * FROM ".$table." WHERE ".$field." = '".$value."'")){
$this->getError();
$return = null;
} else {
$return = mysql_fetch_assoc($this->_result);
}
return $return;
}
function getNumRows(){
if($this->error()){
$this->getError();
$return = null;
} else {
$return = mysql_num_rows($this->_result);
}
return $return;
}
function __destruct(){
$tmp = (bool)$this->_result;
if(!$tmp){
mysql_close($this->_conn_id);
} else {
mysql_free_result($this->_result);
}
}
}
?>
Tipps und Ideen zur Erweiterung sind gern gesehn
Gruß soyo
Zuletzt bearbeitet: