아래 소스는 MySQL 접속 및 쿼리에 필요한 Class 입니다.
MySQL 사용시 필요한 모든 함수를 사용할 수 있도록 할 수도 있지만...
가장 많이 쓰이는 query 부분만이라도 좀 더 쉽게 구연하고자 만들었습니다.
사용방법은 간단합니다.
<?
include_once "Mysql.class.php";
$sq = new Mysql("아이디","비밀번호","디비명");
$sq_id = $sq->Query("select * from test","",__FILE__,__LINE__);
while($rows = $sq->Fetch("fa",$sq_id)) {
echo $rows[no]."<br>";
}
?>
위 소스를 간단히 설명하겠습니다.
1. 개체 생성과 동시에 아이디, 비밀번호, 디비명을 이용해서 MySQL 계정에 접속합니다.
2. query() 메소드를 사용하여 쿼리를 실행합니다.
- 메소드 실행시 메소드는 결과가 저장된 아이디(번호)를 반환합니다.
- 중요한 쿼리 뒷쪽 3개의 인수에 주목하세요...^^
- 쿼리 바로 뒤에는 "" 이렇게 아무것도 입력하지 않았는데요. 이건 조금 있다가 설명하고...
- __FILE__ 은 PHP 기본 상수로서 현재 스크립트가 실행 중인 파일명을 저장하고 있습니다.
- __LINE__ 도 역시 PHP 기본 상수로서 실행중인 줄번호를 저장하고 있습니다.
- 위 정보는 쿼리 에러 발생시 에러 발생 위치를 출력하기 위함입니다.
- 자 그럼 위에서 잠깐 언급한 두번째 인수는 위에 예제가 아닌 아래 예제를 보세요.
<?
$info = $sq->Query("select * from test","fa",__FILE__,__LINE__);
echo $info[name];
echo $info[age];
?>
위 예제에서 보는 것과 같이 쿼리를 실행하고 mysql_fetch_array() 까지 적용해서 $info 라는 변수에 저장이 된 것입니다. 두번째 인수로 "fa" 를 입력했는데 이것이 바로 mysql_fetch_array() 에서 mysql 을 뺀 나머지의 줄임말입니다. (fetch_array => fa , fetch_row => fr)
3. Query() 메소드가 반환한 id(번호)를 이용해서 Fetch 를 적용할 수 있습니다.
위에 첫번째 예제에 있는 것과 같이...
while($rows = $sq->Fetch("fa",$sq_id)) {
echo $rows[no]."<br>";
}
이렇게 사용이 가능합니다. 이것은 일반 코딩에서...
while($rows = mysql_fetch_array($result)) {
echo $rows[no]."<br>";
}
위 소스와 동일합니다.
자 그런데 한가지 의문점이 생깁니다. 쿼리를 한번 실행하기 위해서는
$sq->Query("실행쿼리","",__FILE__,__LINE__);
이렇게 길게 적어야 하는데 좀 쉽게 할 수 없을까요?
당연히 할 수 있습니다. 현재 어떤 에디터를 사용하시는지는 모르겠지만...
저의 경우 Editplus 를 사용합니다. 에디트 플러스에 있는 기능 중 '자동완성'이란 기능이 있습니다.
(도구->기본설정->파일:설정및 구문강조 메뉴에 보시면 자동완성이란 부분이 있으며 파일이 지정되어 있습니다. 확장자가 'acp' 인 파일이지요. 만약 지정된 파일이 없다면 http://www.editplus.co.kr 에 가셔서 php 관련 파일을 받으신 후 설정하시면 되겠습니다.)
이 '자동완성'이란 기능은 쉽게 말해 긴문장을 짧게 사용할 수 있도록 해주는 것이라고 말할 수 있겠습니다.
간단한 예로...acp 파일에...
#T=qu
query("^!","","",__FILE__,__LINE__);
이렇게 설정해 놓으시면 editplus 에서
'qu'입력후 스페이스바를 한번 누르면...
query("커서위치","","",__FILE__,__LINE__); 이렇게 출력이 된다는 것입니다.
참고로 '^!' 이 부분에 커서가 위치되지요.
이런 식으로 설정해서 사용하시면 코딩시 상당히 편하답니다...^^
자 이제 긴 설명을 끝내며 Mysql.class.php 파일 내용을 적겠습니다.
그럼 즐거운 하루되세요.
파일명 : Mysql.class.php
<?
/***********************************************************************
MySQL Class
최초작성일 : 2003-12-24
최종수정일 : 2003-12-24
***********************************************************************/
class Mysql {
var $result = array();
/* 함수설명 : MySQL 에 접속
인수 : $user : 사용자아아디
$pass : 비밀번호
$db : 사용 db명
$host : 호스트명 기본 localhost
*/
function Mysql($user, $pass, $db, $host="localhost") {
if($this->CheckStr($host)) $host = "localhost";
if($this->CheckStr($user)) $this->Error("MySQL 계정 사용자 아이디가 지정되지 않았습니다.");
else if($this->CheckStr($pass)) $this->Error("MySQL 계정 비밀번호가 지정되지 않았습니다.");
else if($this->CheckStr($db)) $this->Error("MySQL 계정 DB명이 지정되지 않았습니다.");
else {
mysql_connect($host, $user, $pass) || die("MySQL 계정 접속에 실패했습니다.");
mysql_select_db($db) || die($db." 선택에 실패했습니다.");
}
}
/* 함수설명 : $str 이 공백문자인지 확인
인수 : $str : 확인할 문자열
return : 공백일 경우 true , 정상문자일 경우 false
*/
function CheckStr($str) {
if(!ereg("([^[:space:]]+)",$str)) return true;
else return false;
}
/* 함수설명 : $str 출력 후 exit;
인수 : $str : 출력할 메세지
*/
function Error($str) {
echo "
<table align=center width=100% height=100% border=0 cellspacing=0 cellpadding=0>
<tr>
<td align=center>
<br>====================== MySQL Error Message Start ======================<br><br>
".$str."<br>
<br><br>====================== MySQL Error Message End =======================<br>
</td>
</tr>
</table>
";
exit;
}
/* 함수설명 : Mysql 쿼리에러 발생시 에러문과 해당 파일과 라인을 출력함
인수 : $file : __FILE__ (PHP 기본 변수)
$line : __LINE__ (PHP 기본 변수)
*/
function QueryError($file="",$line="") {
echo "
<table align=center width=100% height=100% border=0 cellspacing=0 cellpadding=0>
<tr>
<td align=center>
<br>====================== MySQL Query Error Message Start ======================<br><br>
<table align=center>
<tr>
<td>
에러번호 : ".mysql_errno()."<br>에러내용 : ".mysql_error()."<br>";
if($file) echo "에러파일 : ".$file."<br>";
if($line) echo "에러라인 : ".$line."<br>";
echo "
</td>
</tr>
</table>
<br><br>====================== MySQL Query Error Message End =======================<br>
</td>
</tr>
</table>
";
exit;
}
/* 함수설명 : Query 실행 함수
인수 : $str : 실행 할 쿼리문
$option : fr -> fetch_row, fa -> fetch_array, ff -> fetch_field, nr -> num_rows, nf -> num_fields
$file : 에러발생시 표시할 파일이름 ('__FILE__' 기본 PHP 함수)
$line : 에러발생시 표시할 라인번호 ('__LINE__' 기본 PHP 함수)
$db : 쿼리시 기본 DB가 아닐경우 쿼리가 실행될 DB 설정
return : 쿼리문 결과ID (옵션에 따라 결과 값이 반환되기도 함.)
*/
function Query($str,$option='',$file=__FILE__,$line=__LINE__,$db='') {
$id = count($this->result);
$id = (!$id) ? 1 : $id+1;
$this->result[$id] = ($db) ? mysql_db_query($db,$str):mysql_query($str);
if(!$this->result[$id]) $this->queryError($file,$line);
if($option) return $this->Fetch($option,$id);
else return $id;
}
/* 함수설명 : MySQL Resource#ID 를 이용해서 fetch 시킴
인수 : $option : fr -> fetch_row, fa -> fetch_array, ff -> fetch_field, nr -> num_rows, nf -> num_fields
return : fetch 된 값
*/
function Fetch($option, $id="") {
if(!$id) $id = 1;
if($option == 'fr') return mysql_fetch_row($this->result[$id]);
else if($option == 'fa') return mysql_fetch_array($this->result[$id]);
else if($option == 'ff') return mysql_fetch_field($this->result[$id]);
else if($option == 'nr') return mysql_num_rows($this->result[$id]);
else if($option == 'nf') return mysql_num_fields($this->result[$id]);
else return $this->result[$id];
}
}
?>
'인터넷관련' 카테고리의 다른 글
table_sql 을 엑셀파일로 다운받기. (0) | 2008.01.18 |
---|---|
get_magic_quotes_gpc() (0) | 2008.01.18 |
Error Page Code (0) | 2008.01.18 |
호스팅 받는 업체들 용량체크하는법 (0) | 2008.01.18 |
파일네임 금지 (0) | 2008.01.18 |
문자열 내의 HTML 태그를 모두 없애는 방법 (0) | 2008.01.18 |
nowrap 과 break-all 로 테이블 안의 줄바꿈 제어 (0) | 2008.01.18 |
한글로된 색상표 (0) | 2008.01.18 |