Полезное для программистов:

Фриланс
Новости
Статьи
   
Рубрики:


MySQL using by functions

Поиск:
Данный код любезно предоставлен MuToGeN (mutogen@vingrad.ru)
Код

<?
// имя хоста MySQL сервера:
$dbHost="127.0.0.1";

// логин MySQL:
$dbLogin="root";

// пароль MySQL:
$dbPass="";

// используемая по умолчанию база данных:
$dbName="db_name";

// сообщение, которое выдается клиенту, если произошла
// ошибка и режим отладки отключен:
$dbErrorMsg="An error occured.<br>\nPlease try again later.<br>\n";

// режим отладки: если true, то все сообщения об ошибках
// будут передаваться клиенту, если false, то клиенту выдается
// $dbErrorMsg, а сообщение об ошибке отправляется на
// емаил разработчику
$debug=true;

// емаил разработчика: используется для пересылки сообщений
// об ошибках, если режим отладки отключен
$developerEmail="mutogen@vingrad.ru";

// error reporting
function report($msg)
{
global $debug,$dbErrorMsg,$developerEmail;
if($debug)
echo nl2br("<b>$msg</b>");
else
{
mail($developerEmail,"MySQL error",$msg);
echo $dbErrorMsg;
}
exit();
}

// mysql_query() + проверка правильности запроса и report(),
// если запрос содержал ошибки
function mq($query)
{
global $REQUEST_URI;
$result=@mysql_query($query);
$error=mysql_errno();
if($error!=0)
{
$msg="MySQL query error.\nQuery was:\n$query\nMySQL returned:\n$error: ".
mysql_error()."\n\$REQUEST_URI:\n$REQUEST_URI";
report($msg);
}
return $result;
}

// пытается установить постоянное соединение с MySQL сервером,
// если не получается, то пытается установить обычное соединение,
// если и это не выходит, то report(). если соединение было
// установлено, то выбирает БД ($dbName)
function connect()
{
global $link,$isPersistent,$dbHost,$dbLogin,$dbPass,$dbName;
$link=@mysql_pconnect($dbHost,$dbLogin,$dbPass);
if(!$link)
{
$isPersistent=true;
$link=@mysql_connect($dbHost,$dbLogin,$dbPass);
if(!$link)
{
$msg="Could not open both persistent and temporary connection to MySQL DB
server: $dbLogin@$dbHost";
report($msg);
}
}
else
$isPersistent=false;
mq("USE $dbName;");
}

// проверяет, было ли соединение с MySQL постоянным, если нет,
// то разрывает соединение
function disconnect()
{
global $link,$isPersistent;
if(!$isPersistent)
mysql_close($link);
}
?>

пример:

<?

require("db_lib.php");
// приведенный выше фаил

connect();

$r=mq("SELECT host FROM mysql.user;");
// то же самое, что $r=mysql_query("SELECT host FROM mysql.user;");,
// запрос без ошибок.

$r=mq("SELECT nonExistentField FROM mysql.user;");
// ошибочный запрос. выдаст клиенту или перемылит
// разработчику (в зависимости от $debug) сообщение с
// описанием ошибки: Unknown column 'nonExistentField' in 'field list'

disconnect();

?>

 Немного доработал mq(), логирование запросов. Если второй параметр true, то все сейвится в sql.log в той же папке, где лежил скрипт, в который заинклюдили эту библиотечку.
Полезно для поиска семантических ошибок в запросах.
Код
function mq($query,$log=false){
        global $REQUEST_URI;
        $result=@mysql_query($query);
        $error=mysql_errno();
        if($error!=0){
                $msg="MySQL query error.\nQuery was:\n$query\nMySQL returned:\n$error: ".
                     mysql_error()."\n\$REQUEST_URI:\n$REQUEST_URI";
                report($msg);
        }
        if($log){
                $fp=fopen("./sql.log","a");
                fwrite($fp,$PHP_SELF.", ".date("d.m.Y H:i:s").": ".$query."\r\n");
                fclose($fp);
        }
        return $result;
}
 

Автор: MuToGeN






Просмотров: 3201

 

 

Новые статьи:


Популярные:
  1. Как сделать цикличным проигрывание MIDI-файла?
  2. Создание AVI файла из рисунков
  3. Как устройство "отключить в данной конфигурации"?
  4. Kто в данный момент присоединен через Сеть?
  5. Как узнать количество доступной памяти?
  6. Как реализовать в RichEdit разноцветный текст?
  7. Как скрыть свое приложение от ProcessViewer
  8. Как программно нажать/скрыть/показ кнопку "Start"?
  9. Модуль работы с ресурсами в PE файлах
10. Функции вызова диалоговых окон выбора
11. Проверка граматики средствами Word'а из Delphi.
12. Модуль для упрощенного вызова сообщений
13. Функции для записи и чтение своих данных в, ЕХЕ- файле
14. Рекурсивный просмотр директорий
15. Network Traffic Monitor
16. Разные модули
17. Универсальная функция для обращения к любым экспортируем функциям DLL
18. Библиотека от VladS
19. Протектор для UPX'а
20. Еще об ICQ, сообщения по контакт листу?
21. Использование открытых интерфейсов
22. Теория и практика использования RTTI
23. Работа с TApplication
24. Примеры использования Drag and Drop для различных визуальных компонентов
25. Что такое порт? Правила для работы с портами
26. Симфония на клавиатуре
27. Загрузка DLL
28. Исправление автоинкремента
29. Взаимодействие с чужими окнами
30. Проверить дубляжи в столбце


 

 

 
 
На главную