눈사람

간만에 눈이 참 많이 내렸네요..
웅휘 자는 사이에 눈을 치우려고 했는데 그사이 너무 많이 쌓였더라구요.
그래서 눈사람을 만들었습니다. 훨~ 수월하던데요?
모두들 동심으로 돌아가세요.

mysql DB Class

/* vim: set expandtab tabstop=4 shiftwidth=4: */
// +——————————————————–+
// | PHP version 4.3.x |
// +——————————————————–+
// | Copyright (c) 2003 Song Hyo-Jin |
// +——————————————————–+
// | This source file is GPL. |
// +——————————————————–+
// | Author : Song Hyo-Jin |
// | (MSN Messengerable) |
// +——————————————————–+
//
// $Id: mysql.inc, v 0.01 2004/01/15 11:40:00 crosser Exp $
//
// MySQL database control

/*
$test = new MyDB(‘access_file.ini’, [transaction bool]);
$test->query(‘sql query’);
$test->close();
$data = mysql_fetch_object($test->result);

Want query error report
$test->err_report = true;
$test->query(‘sql query’);

With transaction
$test = new MyDB(‘access_file.ini’, true);
$test->query(‘sql query’);
$test->query(‘sql query’);
$test->query(‘sql query’);
if(not good)
$test->close_error(‘error message’);
// or exit(‘error message’); auto rollback;

access_file.ini

ip = localhost
user = sql_user
pass = sql_pass
db = sql_db
*/

// MySQL Unsigned Limit
define(‘MyBIGINT’, ‘18446744073709551615’);
define(‘MyINT’, 4294967295);
define(‘MyMEDIUMINT’, 16777215);
define(‘MySMALLINT’, 65535);
define(‘MyTINYINT’, 255);

$db_set_file = array();

class MyDB
{
var $conn, $transaction, $result, $err_report, $query_count;

function MyDB($db_setting, $transaction = false)
{
$this->err_report = false;
$this->transaction = $transaction;
$this->query_count = 0;
static $db_set_file = array();

if(false === array_key_exists($db_setting, $db_set_file))
$db_set_file[$db_setting] = parse_ini_file($db_setting);
$myset = &$db_set_file[$db_setting];
$this->conn = mysql_connect($myset[‘ip’], $myset[‘user’], $myset[‘pass’]) or exit(‘mysql_connect error’);
mysql_select_db($myset[‘db’], $this->conn) or exit(‘mysql_select_db error’);
if($transaction) {
mysql_query(‘SET AUTOCOMMIT=0’, $this->conn) or exit(‘mysql_transaction_autocommit error’);
mysql_query(‘BEGIN’, $this->conn) or exit(‘mysql_transaction_begin error’);
register_shutdown_function(array(&$this, ‘close_error’));
}
return true;
}

function close()
{
if($this->transaction)
mysql_query(‘COMMIT’, $this->conn) or exit(‘mysql_transaction_commit error’);
mysql_close($this->conn) or exit(‘mysql_close error’);
$this->conn = false;
return true;
}

function close_error($message = ‘mysql_error exit’)
{
if($this->transaction)
mysql_query(‘ROLLBACK’, $this->conn) or exit(‘mysql_transaction_rollback error’);
mysql_close($this->conn) or exit(‘mysql_close_error error’);
exit($message);
return true;
}

function query($query)
{
$this->query_count ++;
$this->result = mysql_query($query, $this->conn) or $this->close_error($this->err_report?’query < '.$query.' > error (count : ‘.$this->query_count.’ ) : ‘.mysql_error($this->conn):’query error (count : ‘.$this->query_count.’ )’);
return true;
}
}

?>

사용법

연결
$test = new MyDB(‘access_file.ini’);

트랜잭션용 연결
$test = new MyDB(‘access_file.ini’, true);

쿼리
$test->query(‘sql query’);

종료 (트랜잭션시 자동 COMMIT)
$test->close();

받아온값
$data = mysql_fetch_object($test->result);

오류출력 원할시
$test->err_report = true;
$test->query(‘error query’);

오류있을시에 종료 (트랜잭션시 자동 ROLLBACK)
$test->close_error(‘error message’);

exit() 만 해도 무조건 ROLLBACK (아마 $test->close() 안하고 종료되도 ROLLBACK)

mysql_insert_id 등의 함수 사용시에 $test->conn 링크 사용.
$idx = mysql_insert_id($test->conn);

서산대사의 답설야중

踏雪野中去하야
不須胡亂行이라
今日我行跡은
遂作後人程이라.

답설 야중거하야
불수 호란행이라
금일 아행적은
수작 후인정이라.

눈 내린 벌판을 밟아갈 때에는
모름지기 그 발걸음을 어지러히 하지 말라
오늘 걸어 가는 나의 발자국이
반듯이 뒷 사람의 이정표가 될 것이니라.

서산대사 書

바쁘네요.

아.. 프로그램 작업하다보면 아주 기초적인 것에 막혀서 헤맬때가 있습니다.
나중에 원인을 찾고나면 상당히 허탈해지죠.
지금도 그런 경우… ^^;;;;
원인을 찾지 못해 몇일동안 미뤄놨던 것을 다시 잡았는데 3시간의 고민, 서핑, 삽질
끝에 원인 발견. 원인은 아주 기초적인 것을 무시(?)해서 생긴 거였습니다.
아………. 머리 아파~~~
오늘은 이만 퇴근하고 낼 해야겠네요.