Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Как вам мой велосипед?

Сообщения:  [1-10]   [11-16] 

 
 автор: nikita2206   (07.08.2010 в 23:18)   письмо автору
 
   для: Ури Геллер   (07.08.2010 в 12:25)
 

Есть такая штука - active record, позволяет избежать мешанины скл с похапе

   
 
 автор: Ури Геллер   (07.08.2010 в 13:43)   письмо автору
 
   для: Ури Геллер   (07.08.2010 в 13:31)
 



<?php

/* Небольшой класс для работы с MySQL */

class MySQL {

    public 
$link;
    private 
$show_errors true;
    private 
$error_log false;
    private 
$q false;

    
// $db = new MySQL($db_host, $db_user, $db_name, $db_pass);
    
public function  __construct($db_host$db_user$db_name$db_pass) {
        
$this->link mysql_connect($db_host$db_user$db_pass);
        if (
$this->link === false) {
            
$this->error_handler();
        }
        if (
mysql_select_db($db_name) === false) {
            
$this->error_handler();
        }
    }

    
// $db->display_errors(0); // отключить вывод ошибок
    
public function display_errors($bool) {
        
$this->show_errors $bool;
    }

    
// $db->error_log('mysql_errors.log'); // записываем сообщения об ошибках в журнал
    
public function error_log($filename) {
        
$this->error_log $filename;
    }
    

    private function 
error_handler() {
        if (
$this->error_log) {
            
$error mysql_error();
            if (
$this->q) {
                
$error.". Query: ".$this->q;
                
$this->false;
            }
            
$f fopen($this->error_log"a+b");
            
flock($fLOCK_EX);
            
fwrite($f$error."\r\n");
            
flock($fLOCK_UN);
            
fclose($f);
        }
        if (
$this->show_errors == true) {
            die(
mysql_error());
        }
    }

    
// $result = $db->($query);
    
public function query($query$return_result true) {
        
$result mysql_query($query);
        if (!
$result) {
            if (
$this->error_log !== false) {
                
$this->$query;
            }
            
$this->error_handler();
        }
        else if (
$return_result == true) {
            return 
$result;
        }
        else {
            
mysql_free_result($result);
        }
    }

    
// $db->insert("users", array("id" => "NULL", "name" => "'test'", "password" => "'test'",));
    
public function insert($table_name$params) {
        
$column_list array_keys($params);
        
$values array_values($params);
        
$q "insert into ".$table_name." (".implode(","$column_list).") values (".implode(","$values).");";
        
$this->query($qfalse);
    }

    
// $db->update("users", array("password" => "'new_password'",), "name = 'test'");
    
public function update($table_name$params$where) {
        
$items = array();
        foreach (
$params as $k => $v) {
            
$items[] = $k."=".$v;
        }
        
$q "update ".$table_name." set ".implode(","$items)." where ".$where.";";
        
$this->query($qfalse);
    }

    
// $db->delete("users", "name = 'test'")
    
public function delete($table_name$where) {
        
$q "delete from ".$table_name." where ".$where.";";
        
$this->query($qfalse);
    }

    
// unset($db);
    // можно и так
    // mysql_close($db->link);
    
public function  __destruct() {
        
mysql_close($this->link);
    }
    
}

?>

   
 
 автор: neadekvat   (07.08.2010 в 13:42)   письмо автору
 
   для: Ури Геллер   (07.08.2010 в 13:31)
 

А словами сказать? Вы уже три раза код выложили - я его весь должен помнить, чтобы сравнить?

   
 
 автор: Ури Геллер   (07.08.2010 в 13:31)   письмо автору
 
   для: neadekvat   (07.08.2010 в 13:28)
 



<?php

/* Небольшой класс для работы с MySQL */

class MySQL {

    public 
$show_errors false;
    public 
$error_log false;
 
    public function 
init($db_host$db_user$db_name$db_pass) {
        
$link mysql_connect($db_host$db_user$db_pass);
        if (!
$link) {
            die(
$this->error_handler());
        }
        if (!
mysql_select_db($db_name)) {
            die(
$this->error_handler());
        }
        return 
$link;
    }

    private function 
error_handler() {
        if (
$this->error_log) {
            
$f fopen($this->error_log"a+b");
            
flock($fLOCK_EX);
            
fwrite($fmysql_error()."\r\n");
            
flock($fLOCK_UN);
            
fclose($f);
        }
        if (
$this->show_errors == true) {
            die(
mysql_error());
        }
    }

    public function 
query($query$return_result true) {
        
$result mysql_query($query);
        if (!
$result) {
            die(
$this->error_handler());
        }
        else if (
$return_result) {
            return 
$result;
        }
        else {
            
mysql_free_result($result);
        }
    }

    public function 
insert($table_name$params) {
        
$column_list array_keys($params);
        
$values array_values($params);
        
$q "insert into ".$table_name." (".implode(","$column_list).") values (".implode(","$values).");";
        
$this->query($qfalse);
    }

    public function 
update($table_name$params$where) {
        
$items = array();
        foreach (
$params as $k => $v) {
            
$items[] = $k."=".$v;
        }
        
$q "update ".$table_name." set ".implode(","$items)." where ".$where.";";
        
$this->query($qfalse);
    }

    public function 
delete($table_name$where) {
        
$q "delete from ".$table_name." where ".$where.";";
        
$this->query($qfalse);
    }
    
}

?>


   
 
 автор: neadekvat   (07.08.2010 в 13:28)   письмо автору
 
   для: Ури Геллер   (07.08.2010 в 13:26)
 

Не понял мысли поста.

   
 
 автор: Ури Геллер   (07.08.2010 в 13:26)   письмо автору
 
   для: neadekvat   (07.08.2010 в 13:23)
 

а там все равно ерунда написана чтобы журнал логов сделать придётся объект создавать чтобы сохранять настройки

   
 
 автор: neadekvat   (07.08.2010 в 13:23)   письмо автору
 
   для: Ури Геллер   (07.08.2010 в 13:21)
 

Я бы советовал использовать file_put_contents, меньше кода.

   
 
 автор: Ури Геллер   (07.08.2010 в 13:21)   письмо автору
 
   для: neadekvat   (07.08.2010 в 13:04)
 

Насчёт логов можно переписать вот так :


<?php

/* Небольшой класс для работы с MySQL */

class MySQL {

    static public function 
init($db_host$db_user$db_name$db_pass) {
        
$link mysql_connect($db_host$db_user$db_pass);
        if (!
$link) {
            die(
mysql_error());
        }
        if (!
mysql_select_db($db_name)) {
            die(
mysql_error());
        }
        return 
$link;
    }

    static public function 
query($query$return_result true$log false) {
        
$result mysql_query($query);
        if (!
$result and $log) {
            
$f fopen($log"a+b");
            
flock($fLOCK_EX);
            
fwrite($fmysql_error()."\r\n");
            
flock($fLOCK_UN);
            
fclose($f);
        }
        if (
$return_result) {
            return 
$result;
        }
        else {
            
mysql_free_result($result);
        }
    }

    static public function 
insert($table_name$params) {
        
$column_list array_keys($params);
        
$values array_values($params);
        
$q "insert into ".$table_name." (".implode(","$column_list).") values (".implode(","$values).");";
        
self::query($qfalse);
    }

    static public function 
update($table_name$params$where) {
        
$items = array();
        foreach (
$params as $k => $v) {
            
$items[] = $k."=".$v;
        }
        
$q "update ".$table_name." set ".implode(","$items)." where ".$where.";";
        
self::query($qfalse);
    }

    static public function 
delete($table_name$where) {
        
$q "delete from ".$table_name." where ".$where.";";
        
self::query($qfalse);
    }
    
}

?>


   
 
 автор: neadekvat   (07.08.2010 в 13:16)   письмо автору
 
   для: Ури Геллер   (07.08.2010 в 13:13)
 

Ну, можно составить список констант и не обрабатывать их.
В противном случаи ваш класс совершенно теряет смысл. Он должен облегчать жизнь - а он просто предлагает альтернативу имеющейся рутины. Шило на мыло.

   
 
 автор: Ури Геллер   (07.08.2010 в 13:13)   письмо автору
 
   для: neadekvat   (07.08.2010 в 13:04)
 

ну да а как быть например с разными SQL константами типа DEFAULT, CURRENT_TIMESTAMP, NULL

   

Сообщения:  [1-10]   [11-16] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования