
13.12.2009, 21:26
|
|
Он хакер.
Регистрация: 01.11.2008
Сообщений: 1,756
Провел на форуме: 6462214
Репутация:
3171
|
|
Нужно было потренироваться с дебагом скриптов.Написал обертку для работы с mysql.Ничего сверхестественного там нет,самая простая обертка.Но есть и плюсы.
1) Можно совсем отключить вывод ошибок внутри класса.
2) Если вывод ошибок всеже включен,то можно управлять выводимыми данными.Такими как текст ошибки mysql,путь до файла с ошибкой,линия с ошибкой.
Повторю,написан исключительно в образовательных целях дебага.
Базовый вызов,с запросом.
PHP код:
<?php
include ('mmysql.class.php');
$mysql = new mmysql('localhost', 'root', 'Frolov', 'mp3a');
$mysql->setting(array('debug' => true, 'full_path' => true,'mysql_query'=>true,'line' => true)); //МОЖНО ПРОПУСТИТЬ
$mysql->maquery("SELecT * FRM table WHERE id = 1", $stats);
print_r($stats);
?>
Сам класс:
PHP код:
<?php
class mmysql
{
var $connect, $ms_error, $line_error, $path_error,$debug;
function mmysql($DBHOST, $DBUSER, $DBPASSWORD, $DBBASE = '')
{
$this->connect = mysql_connect($DBHOST, $DBUSER, $DBPASSWORD);
if (!$this->connect) {
return ($this->GetError());
}
if (!empty($DBBASE)) {
$this->msetdb($DBBASE);
}
}
function setting($array)
{
if ($array['debug'] == false) {
return ($this->debug = $array['debug']);
} else {
$this->debug = $array['debug'];
$this->ms_error = $array['mysql_query'];
$this->path_error = $array['full_path'];
$this->line_error = $array['line'];
}
return (true);
}
function GetError()
{
if (!$this->debug) {
return (die());
}
$bg = debug_backtrace();
$error = '<body style="background-color:#6699FF;color:black"><h1 align="center" color="red">MySQL Error!</h1><br>
<ul><b>File:</b><error style="background-color:white;"><b> ' .
$path = ((!$this->path_error) ? basename($bg[1]['file']) : $bg[1]['file']) .
'<b></error><br><b>Line</b>: <error style="background-color:white;"><b> ' .
$line = ((!$this->line_error) ? 'Admin Line Hidden' : $bg[1]['line']) .
'</b></error><br><b>Function:</b><error style="background-color:white;"> <b>[$mmysql->' .
$bg[1]['function'] .
'()]</b></error><br><b>Text error:<br> <textarea rows="10" cols="25" style="background-color:white;"> ' .
$ms = ((!$this->ms_error) ? 'Admin Query Hidden ' : mysql_error()) .
'</textarea><br></ul></div>';
die($error);
return true;
}
function msetdb($db) // mysql_select_db
{
$selectdb = mysql_select_db($db, $this->connect);
if ($selectdb) {
return (true);
} else {
return ($this->GetError());
}
}
function mquery($query, &$return) // mysql_query
{
$query = mysql_query($query, $this->connect);
if (!$query) {
return ($return = $this->GetError());
} else {
return ($return = $query);
}
}
function mfquery($query, &$return) // mysql_fetch_assoc(mysql_query)
{
$query = mysql_query($query, $this->connect);
if (!$query) {
return ($return = $this->GetError());
} else {
return ($return = mysql_fetch_assoc($query));
}
}
function maquery($query, &$return) // mysql_fetch_array(mysql_query)
{
$query = mysql_query($query, $this->connect);
if (!$query) {
return ($return = $this->GetError());
} else {
return ($return = mysql_fetch_array($query));
}
}
function mnumrows($query, &$return) // mysql_num_rows(mysql_query)
{
$query = mysql_query($query, $this->connect);
if (!$query) {
return ($return = $this->GetError());
} else {
return ($return = mysql_num_rows($query));
}
}
}
?>
Последний раз редактировалось m0Hze; 13.12.2009 в 21:53..
|
|
|