웹마스터 팁

mysql.gif
http://www2.ssam.biz/blog/?tb=1&no=171컬럼이름 수정할때, 안바뀌는 문제가 있었습니다.
` 이거, 이름을 몰라, 알아보니 Grave (그레이브) 라는군요.
테이블 컬럼 이름에 이거 안들어갔던게, 문제의 원인이었습니다.
모두 수정했고, 다시 올렸습니다.
===========================================(7/23) 보충함
위 그림은,, 네개의 화면을 이어붙인 겁니다.
<HR>

다운로드 :http://www2.ssam.biz/blog/file/mysql.rar

/*
* MySQL Web Interface Version 0.8
* -------------------------------
* Developed By SooMin Kim (smkim@popeye.snu.ac.kr)
* License : GNU Public License (GPL)
* Homepage : http://popeye.snu.ac.kr/~smkim/mysql
*/

소스 첫머리에 만든사람의 주석이 있습니다.
김수민님이 만드셨군요. 언젠지 몰라도..

그 바탕에서, 몇가지 갠적으로 수정해서 쓰고 있던 중입니다.
이게 원래 mysql 테이블 덤프를 지원하는 방식이
shell_exec(쉘스크립트라고 하던가..)를 통해선데,,
그거 안먹히는 웹서버도 가끔 있습니다.

그래서 그걸 php명령어로, 처리하는 방법론을 찾다가,
제로보드에서 발견하고 거기 함수를 썼었는데,,,
아마도 저작권문제가 생길거 같아서,,

그걸 직접 연구해서 만들었습니다.
mysql 명령어가 무쟈게 많던데,, 많이 모르는데,, 여튼 어떻게 저떻게 해가지고,, 만들긴 했습니다.

function DumpTB($tablee) { 
 global $PHP_SELF, $USERNAME, $PASSWORD, $action, $dbname, $tablename;
 
 echo "rnrnrnDROP TABLE IF EXISTS `{$tablee}`;rnCREATE TABLE `{$tablee}` ( rn";
 $result = mysql_query("SHOW COLUMNS FROM {$tablee}");
 while ($row = mysql_fetch_array($result)) {
 echo "  `{$row[0]}` ";
 echo "{$row[1]} ";
 if($row[2]) echo "null "; else echo "not null ";
 if($row[3] == "PRI") $pkey = "PRIMARY KEY  (`{$row[0]}`)";
 else if($row[3] == "MUL") $key .= ", rnKEY `{$row[0]}` (`{$row[0]}`)";
 if($row[4]) echo "default '{$row[4]}' ";
 echo "{$row[5]} ,rn";
 }
 echo $pkey.$key."rn) TYPE=MyISAM; rn";
 $key = "";
 $tata = mysql_query("select * from {$tablee}");
 $roxw = mysql_num_fields($tata);
 while($rw = mysql_fetch_array($tata)) {
 echo "rnINSERT INTO `{$tablee}` VALUES ( '{$rw[0]}";
 for($i = 1; $i < $roxw ;$i++) {
  echo "', '{$rw[$i]}";
  }
  echo "' );";
 }
  flush();
}

위 소스가,, 새로 만든 부분입니다.
이 함수 하나로, 테이블하나를 통채로, , 출력합니다. 어쨌거나 이렇게 덤프한 sql파일을 phpmyadmin으로 추가해보니까, 입력되더군요.

하여튼 디비덤프(테이블덤프) 하는 기능하고,
다시 sql파일을 디비에 추가하는 기능. - 이것도 원래는 없었던가,, 잘 기억이 안나는데,
여튼 이것도 shell_exec()가 아닌 php로 처리하도록 만들었고,
그리고,, mysql_query를 날릴수있는 폼을 항상 위에 위치하도록,, 하고,
..
이게 원래 관리자용으로 만들어진건지.. 첫화면에 데이타베이스를 나열하는데,
대다수가 그냥 사용자니까, 첫화면에 자기 디비에 테이블리스트로 오도록 ..

그리고.. 게시물리스트에서 번호로 페이지 바로가기...
등등..
사실 잘 기억도 안납니다. 이게 .. 수년전부터 갠적으로 수정해가며 쓰던거라..
어디까지가 원본이고,, 어디부터가 수정본인지..

하여튼 원제작자의 라이센스가 GPL이라니까, 수정재배포도,, 허락되는거라더군요(검색해보니)

대개 mysql관리할때, phpmyadmin을 쓰는데,
그 프로그램자체가 용량이 디따 크고, 무거워서 움직임도 둔합니다.
물론 따로 설치하지 않아도, 웹호스팅에서 제공하는게 있기도 합니다만//
그래도 늦고, 둔합니다. 기능은 많겠지만,..

이건 그냥 간편히 쓰는겁니다.
압축파일을 열면, mysql.php 파일이 나옵니다.
혹시 UTF-8에서 쓸때는,  2번줄에
header("Content-Type: text/html; charset=euc-kr");
이 부분을
header("Content-Type: text/html; charset=UTF-8");
로 바꾸고, 텍스트에디터에서 UTF-8로 변환하시고,
770줄과 마지막줄에 한글이 있는데, 그거 깨지면 작동안되니까, 유의하시기 바랍니다.

첫화면에서 mysql접속할때의 아이디와 비밀번호를 넣도록 나옵니다.
거기서 로그인해야 디비테이블로 들어오게 됩니다.
단.. 대개는 데이터베이스이름이랑, 사용자아이디랑 같은 경우가 많은데,
간혹 다를때가 있습니다.
그럴때는 소스 53번줄

$dbname = $username; // 이거 아니면 바꿔 쓰세요.

이부분에 데이터베이스이름을 미리넣어주면 됩니다.
어차피 사용자아이디와 비밀번호로 로그인해야 하니까,, 보안상 문제는 크지 않을거 같습니다.

또,, 간혹 호스트가 localhost가 아닌경우도 가끔가다 있습니다.
그럴때는 소스의 12번줄에

$HOSTNAME = "localhost";

이 부분을 수정해주면 됩니다.
그 외에는 수정할게 없습니다. 소스를 그냥 공개할려고 해도, 워낙에.. 길어서. 불가능할거 같습니다. 그래서 그냥 링크파일로 대체합니다. 저기서, sql파일을 mysql에 추가할때 앞머리가 DROP( TABLE) CREATE( TABLE) INSERT( INTO) 이렇게 세개를 검색해서 처리하도록 하고 있는데, 그 이외의 것은 본적이 없어서,, 그렇게 했는데, 또 다른게 있으면,, 알려주시기 바랍니다.