Инклюд для коннекта к MySQL. Поменьше наворотов, побольше безопасности

-faqer-

Я только учусь
Инклюд для коннекта к MySQL. Поменьше наворотов, побольше безопасности

Прошу прощения за обширненький пост, просто охота разобраться
Какие есть проблемы в ниже приведенном коде коннекта к мускулю и обработки запросов
PHP:
/***
****Коннектимся к базе
***/
$con_id = mysql_connect (MYSQL_SERVER, MYSQL_USER, MYSQL_PASSWORD);
if (mysql_error()) {
    if ($SQL_REPORTING) {
        ?>
<b>MySQL ERROR!!!!!!!!!</b><br><?=date('d.m.Y H:i:s')?><br><?=mysql_error()?>
        <?
    exit;
    }
    ?>
<b>MySQL ERROR!!!!!!!!!</b><br><?=date('d.m.Y H:i:s')?>
    <?
    error_log (date('d.m.Y H:i:s')."\t".mysql_error()."\r\n", 3, ENGINE_DIR.'/mysql_errors.log');
    exit;
}
/***
****Выбираем базу
***/
$db_id = mysql_select_db (MYSQL_BASE, $con_id);
if (mysql_error()) {
    if ($SQL_REPORTING) {
        ?>
<b>MySQL ERROR!!!!!!!!!</b><br><?=date('d.m.Y H:i:s')?><br><?=mysql_error()?>
        <?
    exit;
    }
    ?>
<b>MySQL ERROR!!!!!!!!!</b><br><?=date('d.m.Y H:i:s')?>
    <?
    error_log (date('d.m.Y H:i:s')."\t".mysql_error()."\r\n", 3, ENGINE_DIR.'/mysql_errors.log');
    exit;
}
/***
****Обработка запросов и ошибок, с ними связанных
***/
function fun_mysql_query($query) {
    global $SQL_REPORTING;
    $result = mysql_query($query);
    if (mysql_error()) {
        if ($SQL_REPORTING) {
            ?>
<b>MySQL ERROR!!!!!!!!!</b><br><?=date('d.m.Y H:i:s')?><br><?=mysql_error()?><br><?=$query?>
            <?
            exit;
        }
        ?>
<b>MySQL ERROR!!!!!!!!!</b><br><?=date('d.m.Y H:i:s')?>
        <?
        error_log (date('d.m.Y H:i:s')."\t".mysql_error()."\t".$query."\r\n", 3, ENGINE_DIR.'/mysql_errors.log');
        exit;
    }
    return $result;
}
 

SiMM

Новичок
Или я слепой, или я не вижу здесь ни одного РЕАЛЬНОГО sql-запроса. И к чему тогда этот вопрос?
 

vladax

Новичок
Какие есть проблемы в ниже приведенном коде коннекта к мускулю и обработки запросов
=
Ребята, нравиться ли Вам этот код? Могу ли я его использовать?

:)
 

-faqer-

Я только учусь
Можно и так сказать
>>Ребята, нравиться ли Вам этот код? Могу ли я его использовать?

Я хотел не делать каких=то извратов, не тягать за собой кучу классов и и функций
Просто подключиться к базе, и делать запросы
В случае, если что-либо не так, обрубать работу и не давать ни кому ни чего делать, при этом на этапе отладки просто выводить на экран, а во время функционирования сайта записывать ошибки в логи.
 

vladax

Новичок
-faqer-
Предлагаешь потестить твой код? :)
Кстати, многое повторяется - его можно сделать короче раза в два :)
 

-faqer-

Я только учусь
Я хотел узнать ничего ли не опущенно для выполнения описанных требований
Насчет количества кода
Помню около некоторое назад завсегдатаем тут был ромикшеф
Он вообще рекомендовал таскать if (mysql_error()) { за собой по всей программе и не оформлять это в функции, так де быстрее
Я выбрал что-то среднее
 

neko

tеam neko
-faqer-
времена те уже прошли
можешь таскать, можешь не таскать но пользоваться им нужно

что касается требований
В случае, если что-либо не так, обрубать работу
это не требование извини
что не так?
кому обрубать?
 

jrip

Новичок
На счёт ошибок... а чем вот так плохо?
$BASE = mysql_connect("host", "login","pass") or die("Could not connect : " . mysql_error());

ну вместо die можно и echo..
 

neko

tеam neko
никто не говорит что это плохо

тут проблема в другом -- автор первоначального вопроса где-то слышал про какие-то опасности при работы с базами
какие именно и при каких обстоятельствах он не понял
и вот теперь, задался целью написать функции-без-проблем
 

jrip

Новичок
Хм... ну дык, тогда прям в функцию запроса надо очистку вставлять... так, на всякий случай.... Или речь идёт об опасностях соединения с базой? :) Тады, плиз, поподробнее, я об этом ничего не слышал.
 

Фанат

oncle terrible
Команда форума
-faqer-
Ты все сделал неправильно.
у тебя не очень хорошо с программистским образом мышления.
программист усеет обобщать.
и ты учись.
у тебя, в твоих кодах, есть общее место.
вот тебе надо сообразить, что надо писать не набор функций, а ОДНУ.
Которая выполняет всю эту клюкву развесистую с репортингом.

то есть, код твой будет выглядеть примерно так:
PHP:
mysql_connect (MYSQL_SERVER, MYSQL_USER, MYSQL_PASSWORD) or my_error(); 
mysql_select_db (MYSQL_BASE, $con_id) or my_error(); 

function my_error($query) { 
  global $DEBUG, $ERROR;
  $ERROR="Извините, произошла ошибка. Попробуйте зайти позднее.";
  if ($DEBUG) echo mysql_error();
  else error_log (date('d.m.Y H:i:s')."\t".mysql_error()."\t".$query."\r\n", 3, ENGINE_DIR.'/mysql_errors.log'); 
}
запросы вызывать так же, с my_error

Перед выводом шаблона проверяешь $ERROR и если она есть, то вместо шаблона выводишь её
 
Сверху