MyDB ile Mysqli Veritabanı Sorgu ve Hata İzleme

<?php
class myDB{ 
	var $link;
	function __construct(){
		$dbserver = "localhost";
		$dbuser = "root"; 
		$dbpass = "";  
		$dbname = "php";	
		$this->link = mysqli_connect($dbserver,$dbuser,$dbpass,$dbname);
	}
  function sqli(){
		$sorgu = func_get_arg(0); 
		if (!$veri = mysqli_query($this->link,$sorgu)){
			if(func_num_args()>1){ 
				$aranan = basename(func_get_arg(1));             
			}else{ 
				$aranan = "<i>bilinmeyen</i>"; 
			} 
			if(func_num_args()>2){ 
				$satir = func_get_arg(2);
			}else{ 
				$satir = "<i>bilinmeyen</i>"; 
			} 
			trigger_error("<p style=\"color:#ff0000;\"><b>MYDB-HATA:<br />Sorgu</b> ".$sorgu." <b> hata döndürdü.</b><br />".mysqli_error($this->link)." <br /> ".$aranan." <b>dosyasında satır</b> ".$satir." </p>", E_USER_WARNING); 
		} 
		$dizi = explode(" ",$sorgu); 
		$dizi[0] = strtoupper($dizi[0]); 
		if ($dizi[0]=="SELECT"){ 
			$say = mysqli_num_rows($veri); 
		}else{ 
			$say = mysql_affected_rows(); 
		} 
		return array($veri, $say); 
	}
	function __destruct(){
		mysqli_close($this->link);
	}
}
$my = new myDB;	
list($veri, $say) = $my->sqli("SELECT id,sayfa FROM php limit 2",__FILE__,__LINE__);
foreach($veri as $a){
	print_r($a);
}
?>

Çıktısı

Array
(
    [id] => 1
    [sayfa] => 7
)
Array
(
    [id] => 2
    [sayfa] => 3
)

Hata testi

$my = new myDB;	
list($veri, $say) = $my->sqli("WHERE SELECT FROM php",__FILE__,__LINE__);
foreach($veri as $a){
	print_r($a);
}

Hata Çıktısı

Warning:
MYDB-HATA:
Sorgu WHERE SELECT FROM php hata döndürdü.
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE SELECT FROM php' at line 1 
index.php dosyasında satır 40

in C:\www\index.php on line 24

Warning: Invalid argument supplied for foreach() in C:\www\index.php on line 41

 

Hata Ayıklama ve Hata Kayıtlarını Tarihleri ile Saklama

<?php
header('Content-Type: text/html; charset=utf-8');
class HataAyiklama {
	function hata2($V,$isim="") {
		$tiprengi="RED";
		$isimrengi="BLUE";
		$degerrengi="BLACK";
		$D="";
		if (is_int($V)) {
			$D="<FONT COLOR=$tiprengi><B>Sayı: </B></FONT>";
			if ($isim!="") $D .= "( <FONT COLOR=$isimrengi>$isim</FONT> ) ";
			$D.=" [ <FONT COLOR=$degerrengi>$V</FONT> ]";
		}
		if (is_string($V)) {
			$D="<FONT COLOR=$tiprengi><B>Metin: </B></FONT>";
			if ($isim!="") $D .= "( <FONT COLOR=$isimrengi>$isim</FONT> ) ";
			$D.=" [ <FONT COLOR=$degerrengi>"$V"</FONT> ]";
		}
		if (is_array($V)) {
			$D = "<FONT COLOR=$tiprengi><B>Dizi: </B></FONT>";
			if ($isim!="") $D .= "( <FONT COLOR=$isimrengi>$isim</FONT> ) ";
			$D .= "<FONT COLOR=$degerrengi><UL>";
			while(list($key, $val) = each($V)) {
				$D.= hata2($val,$key); 
			}
			$D.="</UL></FONT>";
		}
		$D.="<BR>";
		return($D);
	}
	function hata($V,$isim="") {
		$D = $this->hata2($V,$isim);
		$D .= "<META CHARSET=UTF-8><TABLE SIZE=100% CELLSPACING=0 CELLPADDING=0 BORDER=0><TR><TD><HR SIZE=1></TD>
		<TD WIDTH=1%><FONT FACE='Verdana,arial' SIZE=1>".date("d.m.Y")." ".date("H:i:s")."</FONT></TD></TR></TABLE>";
		$alt = @file("./hata.html");
		$alt[] = "";
		$alt = implode($alt,"");
		$fp = @fopen("./hata.html","w");
		if($fp==""){
			echo '<SCRIPT>alert("hata.html dosyası gerekli");</SCRIPT>';
			exit;
		}else{
			fwrite($fp,$D."\n");
			fwrite($fp,$alt);
			fclose($fp);
		}
		echo '<SCRIPT>w=window.open("hata.html","HataAyiklamaVAR","WIDTH=450,HEIGHT=500,scrollbars=yes,resizable=yes");w.focus();</SCRIPT>';
	}              
}
$degisken1="Bu bir hatadır";
$D = new HataAyiklama();
$D->hata($degisken1,"degisken1");
?>

Çıktısı

Metin: ( degisken1 ) [ "Bu bir hatadır" ]
07.06.2018 01:12:44
Metin: ( degisken1 ) [ "Bu bir hatadır" ]
07.06.2018 01:12:20