Kendi yazdığım class,
ben şuan kullanıyorum oldukçada kullanışlı.
Kullanımı;
<?php
$_CFG["dir"]["log"] = './';
$cfg = array( "Server" => "localhost",
"User" => "root",
"Password" => "pass",
"Database" => "testdb",
"Prefix" => "tbl_",
);
$SQL = new mysql_class($cfg);
$SQL->TestMode = true;
$SQL->sorgu("SELECT * FROM test_db", __FILE__, __LINE__);
if ($SQL->satir()) {
while($ROW = $SQL->satir()){
//Kod...
}
}
$SQL->sorgu("INSERT"__FILE__, __LINE__);
$Numrows = $SQL->eklenenid();
$SQL->sorgu("UPDATE"__FILE__, __LINE__);
$Numrows = $SQL->degisen();
$SQL->sorgu("SELECT",__FILE__, __LINE__);
$key = "UniqueID"; // Eğer diziyi key e göre sıralasın istersen
$DataSet = $SQL->matris($key);
?>
Not : eğer SQL->TestMode = true; yaparsan; komutları göze güzel gözükmesi
için parse ederken biraz kasıyor.
<?php
$SQL->dump();
class mysql_class {
var $Host = "";
var $Database = "";
var $User = "";
var $Password = "";
var $log_dosyasi = "";
var $Record = Array();
var $Query_Sayisi = 0;
var $Row;
var $Link_ID = 0;
var $Connected = false;
var $Query_ID = 0;
var $Version = 0;
var $Prefix = "";
var $Charset = "latin5";
var $Collation = "latin5_turkish_ci";
var $TestMode = false;
var $TestDump = "";
var $SyntaxFind = array('ALL', 'ASC', ' AS', 'ALTER', 'AND', 'ADD',
'AUTO_INCREMENT', 'BETWEEN', 'BINARY', 'BOTH', 'BY', 'BOOLEAN', 'CHANGE',
'CHECK', 'COLUMNS', 'CONCAT','COLUMN', 'CROSS', 'CREATE',
'DATABASES', 'DATABASE', 'DATA', 'DELAYED', 'DESCRIBE', 'DESC', 'DISTINCT',
'DELETE',
'DROP', 'DEFAULT', 'ENCLOSED', 'ESCAPED', 'EXISTS', 'EXPLAIN',
'FIELDS', 'FIELD', 'FLUSH', 'FOR', 'FOREIGN', 'FROM', 'GROUP',
'GRANT', 'HAVING', 'IGNORE', 'INDEX', 'INFILE', 'INSERT', 'INNER',
'INTO', 'IDENTIFIED', ' IS', ' IF', 'JOIN', 'IN', 'KEYS', 'KILL', 'KEY',
'LEADING', 'LIKE', 'LIMIT', 'LINES', 'LOAD', 'LOCAL', 'LEFT','LOCK',
'LOW_PRIORITY', 'LEFT', ' LANGUAGE', 'MODIFY', 'NATURAL', 'NOT', 'NULL',
'NEXTVAL', 'OPTIMIZE', 'OPTION', 'OPTIONALLY', 'ORDER', 'OUTFILE',
'OR', 'OUTER', ' ON', 'PROCEEDURE', 'PROCEDURAL', 'PRIMARY', 'READ',
'REFERENCES', 'REGEXP', 'RENAME', 'REPLACE', 'RETURN', 'REVOKE',
'RLIKE', 'RIGHT', ' SHOW', 'SONAME', ' STATUS', 'STRAIGHT_JOIN', 'SELECT',
'SETVAL', 'SET', 'TABLES', 'TEMINATED', ' TO', 'TRAILING',
'TRUNCATE', 'TABLE', 'TEMPORARY', 'TRIGGER', 'TRUSTED', 'UNIQUE', 'UNLOCK',
'USE', 'USING', 'UPDATE', 'UNSIGNED', 'VALUES', 'VARIABLES', 'VIEW',
'WITH', 'WRITE', 'WHERE', 'ZEROFILL', 'XOR',"CONCAT\(", "\(", "\)","=");
var $SyntaxRepl = "<span style='color: #993333; font-weight:
bold;'>\\1</span> ";
var $SqlQueries = array();
var $TotalQueryTime = 0;
function mysql_class($db_vars = array())
{
global $_CFG;
$this->Host = $db_vars["Server"];
$this->Database = $db_vars["Database"];
$this->User = $db_vars["User"];
$this->Password = $db_vars["Password"];
$this->log_dosyasi = ($db_vars["ErrFile"] ? $db_vars["ErrFile"] :
$_CFG["dir"]["log"] . "mysql.err.log");
$this->Prefix = $db_vars["Prefix"];
if (isset($db_vars["Charset"])) $this->Charset =
$db_vars["Charset"];
if (isset($db_vars["Collation"])) $this->Collation =
$db_vars["Collation"];
}
function busy(){
header ("Location: busy.html");
die();
}
function connect()
{
if (!$this->Connected) {
$this->Link_ID = @mysql_connect($this->Host, $this->User,
$this->Password) or $this->busy();
//$this->Link_ID = mysql_connect($this->Host, $this->User,
$this->Password) or die(mysql_error());
if (!is_resource($this->Link_ID)) {
$hata_arr['Sunucu'] = "MySQL Sunucusuna Bağlanılamadı.";
}
if (!mysql_select_db($this->Database, $this->Link_ID)) {
$hata_arr['Veritabanı'] = $this->Database . " veritabanına
bağlantı sağlanamadı.";
$this->busy();
}
if (count($hata_arr) > 0) {
$this->hata($hata_arr);
} else {
$this->Connected = true;
$Version = explode('.',
mysql_get_server_info($this->Link_ID));
$this->Version = (int) sprintf('%d%02d%02d', $Version[0],
$Version[1], intval($Version[2]));
if ($this->Version >= 40100) {
$this->sorgu( "SET CHARACTER SET " . $this->Charset .
";", __FILE__, __LINE__ );
$this->sorgu( "SET collation_connection = '" . $this->Collation . "';",
__FILE__, __LINE__ );
}
}
}
return $this->Link_ID;
}
function sorgu($Query_String, $File = false, $Line = false)
{
$QueryTimer = setTimer();
$this->connect();
if ($this->Query_ID) {
$this->Query_ID = 0;
}
$this->Query_Sayisi++;
$this->Query_ID = @mysql_query($Query_String, $this->Link_ID);
//$this->Query_ID = mysql_query($Query_String, $this->Link_ID) or
die(mysql_error()."<br />Q:".$Query_String);
$this->Row = 0;
if (!$this->Query_ID) {
$sql_hata = mysql_error();
$sql_hata_num = mysql_errno();
$hata_arr = array("Sunucu Durumu" =>
(is_resource($this->Link_ID) ? "Bağlantı Sorunsuz" : "Bağlantı Yok!") ,
"Sunucu Son Hatası" => ($sql_hata_num ? $sql_hata . " [" .
$sql_hata_num . "]" : "Hata yanıtı alınamadı"),
"Sorgu" => $Query_String,
"Hata Dosyası" => ($File ? $File : "Dosya Belirtilmedi!") ,
"Hata Satırı" => ($Line ? $Line : "Satır Belirtilmedi!")
);
unset($sql_hata, $sql_hata_num);
$this->hata($hata_arr);
}
$Timer = setTimer($QueryTimer);
$this->SqlQueries[] = array('Query' => $Query_String, 'Time' =>
$Timer);
$this->TotalQueryTime += $Timer;
if ($this->TestMode) {
if (substr($Query_String,-1) != ';') $Query_String .= ';';
foreach($this->SyntaxFind as $KeyWord) {
$Query_String = preg_replace("/(" . $KeyWord . "+(
|[\r\n]+|;))/i", $this->SyntaxRepl, $Query_String);
}
$Query_String = str_replace("as", "AS", $Query_String);
$this->TestDump .= "<tr><td class=\"sqldump_yazi\"
valign=\"top\"><b>Sorgu</b></td><td class=\"sqldump_yazi\">" .
nl2br($Query_String) . "</td></tr>";
$this->TestDump .= $File ? "<tr><td class=\"sqldump_yazi\"
valign=\"top\"><b>Dosya</b></td><td
class=\"sqldump_yazi\">".$File."</td></tr>" : "";
$this->TestDump .= $Line ? "<tr><td class=\"sqldump_yazi\"
valign=\"top\"><b>Satır</b></td><td
class=\"sqldump_yazi\">".$Line."</td></tr>" : "";
if (count($hata_arr)) {
$this->TestDump .= "<tr valign=\"top\"><td
class=\"sqldump_yazi\"><b>Hata</b></td><td class=\"sqldump_yazi\"><table
border=\"0\" cellspacing=\"0\" cellpadding=\"0\" bgcolor=\"#FFE6E4\">";
foreach($hata_arr as $key => $value) {
$this->TestDump .= "<tr><td class=\"sqldump_yazi\"
width=\"110\" valign=\"top\"><b>" . $key . "</b></td><td
class=\"sqldump_yazi\">" . $value . "</td></tr>";
}
$this->TestDump .= "</table></td></tr>";
} else {
$this->TestDump .= "<tr><td
class=\"sqldump_yazi\"><b>Hata</b></td><td class=\"sqldump_yazi\">Sorgu
Başarılı</td></tr>";
if (substr(trim($Query_String), 0, 3) != "SET") {
if (eregi("SELECT", strtoupper($Query_String))) {
$this->TestDump .= "<tr><td class=\"sqldump_yazi\"
width=\"70\"><b>Bulunan</b></td><td class=\"sqldump_yazi\">" .
($this->adet() ? $this->adet() : "0") . "</td></tr>";
} else {
$this->TestDump .= "<tr><td
class=\"sqldump_yazi\"><b>Etkilenen</b></td><td class=\"sqldump_yazi\">" .
($this->degisen() ? $this->degisen() : "0") . "</td></tr>";
}
}
}
$this->TestDump .= "<tr><td style=\"height:4px;\"
bgcolor=\"#FFFFCC\" colspan=\"2\"></td></tr>\r\n";
}
return $this->Query_ID;
}
function dump($TestMode = true)
{
echo "<style>.sqldump_baslik
{Font-Family:Verdana,Tahoma;Font-Size:11px;} .sqldump_yazi
{Font-Family:Verdana,Tahoma;Font-Size:10px;}</style>";
echo "<table border=\"1\" cellpadding=\"0\" cellspacing=\"0\"
width=\"100%\" style=\"border-collapse: collapse;\">
<tr><td align=\"center\" bgcolor=\"#FFFFCC\" colspan=\"2\"
class=\"sqldump_baslik\"><b>SQL Test Mode</b></td></tr>";
echo $this->TestDump;
echo "</table>";
$this->TestMode = $TestMode;
}
function degisen()
{
return @mysql_affected_rows($this->Link_ID);
}
function eklenenid()
{
return @mysql_insert_id($this->Link_ID);
}
function adet()
{
if (@mysql_num_rows($this->Query_ID)) {
return @mysql_num_rows($this->Query_ID);
} else {
return false;
}
}
function satir()
{
$this->Record = @mysql_fetch_assoc($this->Query_ID);
$this->Row += 1;
if (!is_array($this->Record)) {
@mysql_free_result($this->Query_ID);
$this->Query_ID = 0;
}
return $this->Record;
}
function matris($Index_Key = false)
{
unset($this->Matris);
$this->Matris = array();
if ($this->adet()) {
if ($Index_Key) {
while ($row = $this->satir()) {
$this->Matris[$row[$Index_Key]] = $row;
}
} else {
while ($row = $this->satir()) {
$this->Matris[] = $row;
}
}
}
return $this->Matris;
}
function hata($hata_arr)
{
if (!file_exists($this->log_dosyasi)) {
$fp = fopen($this->log_dosyasi, "w");
$fb = "";
$fb .= "<? die(\"Geçersiz Dosya İsmi\"); ?>\r\n";
$fb .=
"***********************************************************************\r\n";
$fb .= "******************\r\n";
$fb .= "****************** MySQL Veritabanı Hata Kayıt Dosyası
***************\r\n";
$fb .= "******************\r\n";
$fb .=
"***********************************************************************\r\n";
@fputs($fp, $fb);
} else {
$fp = fopen($this->log_dosyasi, "a+");
}
@fputs($fp, date("d.m.Y H:i:s") . "\r\n");
@fputs($fp,
"-------------------------------------------------------------------" .
"\r\n");
foreach($hata_arr as $k => $v) {
@fputs($fp, $k . " : " . $v . "\r\n");
}
@fputs($fp,
"-------------------------------------------------------------------" .
"\r\n\r\n");
@fclose($fp);
return true;
}
}
?>
_______________________________________________
Linux-programlama mailing list
[email protected]
http://liste.linux.org.tr/mailman/listinfo/linux-programlama
Liste kurallari: http://liste.linux.org.tr/kurallar.php