MyDB ile Mysqli Veritabanı Sorgu ve Hata İzleme

PHP
44 lines
<?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);
}
?>
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Çıktısı

PHP
10 lines
Array
(
[id] => 1
[sayfa] => 7
)
Array
(
[id] => 2
[sayfa] => 3
)
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Hata testi

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

Hata Çıktısı

Markdown
9 lines
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
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

 

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

PHP
53 lines
<?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");
?>
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Çıktısı

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