ÀÌÁ¦ ¾Õ¿¡¼ ¹è¿î msqlperlÀ» ÀÌ¿ëÇؼ Unix ¸í·ÉÇà¿¡¼ Å×ÀÌºí ½ºÅ°¸¶¸¦ º¸´Âµ¥ »ç¿ëÇß´ø relshow¸¦ ±¸ÇöÇϵµ·Ï ÇÏÀÚ.
relshow ¸í·ÉÀº ´ÙÀ½°ú °°ÀÌ ¼¼°¡Áö Çü½ÄÀ¸·Î »ç¿ëµÈ´Ù.
Unix ¸í·ÉÇà |
¼³¸í |
CGI |
relshow |
DB ¸ñ·ÏÀ» Ãâ·Â |
listdb.cgi |
relshow dB |
Ç¥ÀÇ ¸ñ·ÏÀ» Ãâ·Â |
listtb.cgi |
relshow dB table |
Ç¥ÀÇ ½ºÅ°¸¶¸¦ Ãâ·Â |
listfd.cgi |
|
À§¿Í °°Àº relshow ¸í·ÉÀº listdb.cgi, listtb.cgi, listfd.cgi¶ó´Â ¼¼ °³ÀÇ CGI·Î ±¸ÇöµÇ¾ú´Ù.
DB ¸ñ·Ï(listdb.cgi)
µ¥ÀÌÅͺ£À̽ºÀÇ ¸ñ·ÏÀ» Ãâ·ÂÇϱâÀ§ÇØ listdbs ¸Þ¼Òµå¸¦ »ç¿ëÇß´Ù.
¼Ò½º
1 : #!/usr/local/bin/perl -w
2 :
3 : use Msql;
4 :
5 : $dbh = Msql->connect;
6 : defined($dbh) || CgiDie('µ¥ÀÌŸº£À̽º¿¡ Á¢¼ÓÇÒ ¼ö ¾ø½À´Ï´Ù');
7 :
8 : @arr = $dbh->listdbs;
9 :
10 : print &PrintHeader;
11 : print &HtmlTop("µ¥ÀÌŸº£À̽º ¸ñ·ÏÀÔ´Ï´Ù.");
12 : print '<form method=post action="/~artech/cgi-bin/listtb.cgi">', "\n";
13 : print '<select name="database">', "\n";
14 :
15 : for(0..$#arr) {
16 : print "<option>$arr[$_]\n";
17 : }
18 :
19 : print "</select>\n";
20 : print "<input type=submit value='º¸³»±â'>";
21 : print "</form>";
22 : print &HtmlBot;
½ÇÇà°á°ú
¼³¸í
- use Msql;
- Msql.pmÀ̶ó´Â ¸ðµâÀ» »ç¿ëÇÏ°Ú´Ù´Â ¼±¾ðÀÌ´Ù. msqlperlÀ» »ç¿ëÇϱâ Àü¿¡´Â ¹Ýµå½Ã ÀÌ ¹®ÀåÀ» ÀÌ¿ëÇؼ Msql.pm ¸ðµâÀ» °¡Á®¿Í¾ß ÇÑ´Ù.
- $dbh = Msql->connect;
- Msql Å©·¡½º¸¦ ÀÌ¿ëÇؼ ·ÎÄ® dB ¿£Áø¿¡ Á¢¼ÓÇÑ´Ù. À¥¼¹ö¿Í dB ¼¹ö°¡ ¼·Î ´Ù¸¥ È£½ºÆ®¿¡ ÀÖ´Â °æ¿ì¿¡´Â dB ¼¹öÀÇ ÁÖ¼Ò¸¦ ÁÖ¸éµÈ´Ù. ±×·¯³ª À¥¼¹ö¿Í dB ¼¹ö°¡ °°Àº È£½ºÆ®¿¡ ÀÖ´Â °æ¿ì¿¡´Â TCP/IP ¼ÒÄÏÀ» ÀÌ¿ëÇÏ´Â °Íº¸´Ù´Â Unix ¼ÒÄÏÀ» ÀÌ¿ëÇÏ´Â °ÍÀÌ ¼º´É¸é¿¡¼´Â ¿ì¼öÇϹǷΠ±»ÀÌ È£½ºÆ®ÀÇ ÁÖ¼Ò¸¦ ÁÙ ÇÊ¿ä´Â ¾ø´Ù.
- defined($dbh) || CgiDie('µ¥ÀÌŸº£À̽º¿¡ Á¢¼ÓÇÒ ¼ö ¾ø½À´Ï´Ù');
- µ¥ÀÌÅͺ£À̽º ¿£Áø°úÀÇ Á¢¼ÓÀÌ ¼³Á¤µÇ¾ú´ÂÁö¸¦ °Ë»çÇÏ´Â ºÎºÐÀÌ´Ù. Á¢¼ÓÀ̵ÇÁö ¾ÊÀº °æ¿ì cgi-lib.plÀÇ CgiDie() ÇÔ¼ö¸¦ ÀÌ¿ëÇؼ ¿À·ù¸Þ½ÃÁö¸¦ Ãâ·ÂÇÑ´Ù.
ÆÞÀÇ °ü·Ê»ó ¼ºê·çƾÀº &·Î ½ÃÀÛÇØ¾ß ÇÏÁö¸¸, &¸¦ »ý·«ÇÏ°í ÀÏ¹Ý ¾ð¾îÀÇ ÇÔ¼öó·³ »ç¿ëÇصµ ¹«°üÇÏ´Ù.
- @arr = $dbh->listdbs;
- µ¥ÀÌŸº£À̽ºÀÇ ¸ñ·ÏÀ» °¡Á®¿Í¼ @arrÀ̶ó´Â ¹è¿¿¡ ÀúÀåÇÑ´Ù. µ¥ÀÌÅͺ£À̽ºÀÇ ¸ñ·ÏÀ» °¡Á®¿À´Â CGIÀ̹ǷΠselectdb ¸Þ¼Òµå¸¦ »ç¿ëÇؼ µ¥ÀÌÅͺ£À̽º¸¦ ¼±ÅÃÇÒ ÇÊ¿ä´Â ¾ø´Ù.
»ç½Ç»ó mSQL ¿£Áø¿¡´ëÇÑ ÁúÀÇ°¡ ³¡³ª´Â ÁöÁ¡À̸ç, ÀÌ ÈÄ´Â ÀÌ·¸°Ô °¡Á®¿Â µ¥ÀÌÅÍ´Â HTML·Î º¯È¯ÇÏ´Â ºÎºÐ¿¡ ºÒ°úÇÏ´Ù.
- 10~22
- @arr ¹è¿ÀÇ ³»¿ëÀ¸·Î ¼±Åøñ·ÏÀ» ¸¸µå´Â ºÎºÐÀÌ´Ù. <FROM> ű×ÀÇ ActionÀº listdb.cgi·Î µÇ¾îÀÖÀ¸¸ç, <SELECT> ű×ÀÇ NAME ¼Ó¼ºÀÌ database·Î µÇ¾îÀÖ´Ù´Â °Í¿¡ ÁÖÀÇÇϱâ¹Ù¶õ´Ù.
»ç¿ëÀÚ°¡ µ¥ÀÌÅͺ£À̽º¸¦ ¼±ÅÃÇϸé
database=¼±ÅÃÇÑDB
Çü½ÄÀ¸·Î listtb.cgi¿¡ ÀÎÀÚ¸¦ Àü´ÞÇϰԵȴÙ.
Å×ÀÌºí ¸ñ·Ï(listtb.cgi)
listtb.cgi´Â listdb.cgi·ÎºÎÅÍ ³Ñ°Ü¹ÞÀº µ¥ÀÌÅͺ£À̽º¿¡´ëÇÑ Å×À̺íÀÇ ¸ñ·ÏÀ» º¸¿©ÁÖ´Â CGIÀÌ´Ù.
¼Ò½º
1 : #!/usr/local/bin/perl -w
2 :
3 : require './cgi-lib.pl';
4 :
5 : &ReadParse;
6 :
7 : use Msql;
8 :
9 : $dbh = Msql->connect;
10 : defined($dbh) || CgiDie('µ¥ÀÌŸº£À̽º¿¡ Á¢¼ÓÇÒ ¼ö ¾ø½À´Ï´Ù');
11 :
12 : $dbh->selectdb($in{'database'});
13 :
14 : @arr = $dbh->listtables;
15 :
16 : print &PrintHeader;
17 : print &HtmlTop("Å×ÀÌºí ¸ñ·ÏÀÔ´Ï´Ù.");
18 :
19 : print "<form method=post action="/~artech/cgi-bin/listfd.cgi">";
20 : print "<select name="table">\n";
21 : for(0..$#arr) {
22 :
23 : print "<option>$arr[$_]\n";
24 : }
25 : print "</select>\n";
26 : print "<input type=hidden name=database value="$in{database}">";
27 : print "<input type=submit value='º¸³»±â'>";
28 : print "</form>";
29 :
30 : print &HtmlBot;
½ÇÇà°á°ú
¼³¸í
- require './cgi-lib.pl';
- ¾Õ¼ º¸¾Òµí cgi-lib.plÀ̶ó´Â ¶óÀ̺귯¸®¸¦ °¡Á®¿À´Â ºÎºÐÀÌ´Ù. cgi-lib.plÀ̶ó´Â ¶óÀ̺귯¸®°¡ ÆÞÀÇ Ç¥ÁØ ¶óÀ̺귯¸® °æ·Î(@INC)¿¡ Æ÷ÇԵǾî ÀÖÁö ¾ÊÀº °æ¿ì¿¡´Â ¶óÀ̺귯¸®ÀÇ ¿ÏÀüÇÑ °æ·Î¸¦ ÁÖ¾î¾ß ÇÑ´Ù.
ÀÌ ¶óÀ̺귯¸®°¡ ÇöÀç µð·ºÅ丮¿¡ ÀÖ´Â °æ¿ì¿¡´Â ¿¹¿¡¼Ã³·³ ÇöÀç µð·ºÅ丮ÀÓÀ» ¹Ýµå½Ã Ç¥½ÃÇØ ÁÖ¾î¾ß ÇÑ´Ù.
- &ReadParse;
- cgi-lib.pl¿¡¼ °¡Àå Áß¿äÇÑ ·çƾÀ¸·Î Æû µ¥ÀÌÅ͸¦ µðÄÚµùÇÏ´Â ·çƾÀÌ´Ù. cgi-lib.plÀº Off-line ¸ðµå¸¦ Áö¿øÇϹǷΠ»ç¿ëÀÚÀÇ ÀÔ·ÂÀÌ ´ÙÀ½°ú °°ÀÌ ÀÎÄÚµùµÇ¾î Àü´ÞµÈ´Ù¸é
database=commlab&table=book
Unix ¸í·ÉÇà¿¡¼ ´ÙÀ½°ú °°ÀÌ ÀÔ·ÂÇÏ¸é µÈ´Ù.
listdb.cgi database=commlab table=book
- 7~10
- listdb.cgi¿Í µ¿ÀÏÇÏ´Ù.
- $dbh->selectdb($in{'database'});
- Å×À̺íÀÇ ¸ñ·ÏÀ» ¾ò±âÀ§ÇØ µ¥ÀÌÅͺ£À̽º¸¦ ¼±ÅÃÇÏ´Â ¹®ÀåÀÌ´Ù. µ¥ÀÌÅͺ£À̽ºÀÇ À̸§Àº listdb.cgi°¡ Àü´ÞÇÑ´Ù.
- @arr = $dbh->listtables;
- ¼±ÅÃÇÑ µ¥ÀÌÅͺ£À̽º·ÎºÎÅÍ Å×À̺íÀÇ ¸ñ·ÏÀ» °¡Á®¿Í @arrÀ̶ó´Â ¹è¿¿¡ ÀúÀåÇÑ´Ù.
- print "<input type=hidden name=database value="$in{database}">";
- listfd.cgi´Â Å×À̺íÀÇ ½ºÅ°¸¶¸¦ Ãâ·ÂÇÏ´Â CGIÀÌ´Ù. Å×ÀÌºí ½ºÅ°¹Ì¸¦ Ãâ·ÂÇϱâÀ§Çؼ´Â µ¥ÀÌÅͺ£À̽ºÀÇ À̸§°ú Å×À̺íÀÇ À̸§ÀÌ ÇÊ¿äÇÏ´Ù. listtb.cgi´Â Å×À̺íÀÇ À̸§¸¸ listfd.cgi¿¡ °Ç³×ÁÙ ¼ö ÀÖÀ¸¹Ç·Î ÀÌÀü¿¡ listdb.cgi¸¦ ÀÌ¿ëÇؼ ¼±ÅÃÇÑ µ¥ÀÌÅͺ£À̽ºÀÇ À̸§Àº <INPUT> ű×ÀÇ HIDDEN Çü½ÄÀ» ÀÌ¿ëÇؼ listfd.cgi¿¡ Àü´ÞÇØ¾ß ÇÑ´Ù.
À¥Àº »óÅÂÁ¤º¸¸¦ À¯ÁöÇÒ ¼ö ¾ø±â ¶§¹®¿¡ ÀÌ¿Í°°ÀÌ <INPUT> ű×ÀÇ HIDDEN Çü½ÄÀ» ÀÌ¿ëÇؼ ÀÌÀü »óÅÂÁ¤º¸¸¦ ´ÙÀ½ CGI¿¡ Àü´ÞÇϰԵȴÙ.
- 16~30
- @arr¿¡ ÀúÀåµÈ Å×À̺íÀÇ ¸ñ·ÏÀ» HTML·Î º¯È¯ÇÏ´Â ºÎºÐÀÌ´Ù. <SELECT> ű׿¡¼ ÁöÁ¤ÇÑ À̸§°ú »ç¿ëÀÚ°¡ ¼±ÅÃÇÑ °ª, 26 ÇàÀÇ <INPUT>ÀÇ À̸§°ú °ªÀÌ ´ÙÀ½°ú °°Àº Çü½ÄÀ¸·Î listfd.cgi¿¡ Àü´ÞµÈ´Ù.
database=commlab&table=book
Å×ÀÌºí ½ºÅ°¸¶ Ãâ·Â(listfd.cgi)
´ÙÀ½Àº listtb.cgi·ÎºÎÅÍ ³Ñ°Ü¹ÞÀº µ¥ÀÌÅͺ£À̽ºÀÇ À̸§°ú Å×À̺í À̸§À¸·Î Å×ÀÌºí ½ºÅ°¸¶¸¦ Ãâ·ÂÇÏ´Â CGIÀÌ´Ù.
¼Ò½º
1 : #!/usr/local/bin/perl -w
2 :
3 : require './cgi-lib.pl';
4 :
5 : &ReadParse;
6 :
7 : use Msql;
8 :
9 : $dbh = Msql->connect;
10 : defined($dbh) || CgiDie('µ¥ÀÌŸº£À̽º¿¡ Á¢¼ÓÇÒ ¼ö ¾ø½À´Ï´Ù');
11 :
12 : $dbh->selectdb($in{'database'});
13 :
14 : $sth = $dbh->listfields($in{'table'});
15 :
16 : unless(defined($sth)) {
17 : $msg = $dbh->errmsg;
18 : CgiDie("$msg");
19 : }
20 :
21 : @fields = $sth->name;
22 : @types = $sth->type;
23 : @isnull = $sth->isnotnull;
24 : @length = $sth->length;
25 :
26 : print &PrintHeader;
27 : print &HtmlTop("$in{'table'}ÀÇ ½ºÅ°¸¶ÀÔ´Ï´Ù.");
28 :
29 : print "<ul>\n";
30 :
31 : for(0..$#fields) {
32 : print "<li> $fields[$_], ";
33 : do {
34 : print "Á¤¼öÇü, " if $types[$i] == Msql::INT_TYPE;
35 : print "¹®ÀÚÇü, " if $types[$i] == Msql::CHAR_TYPE;
36 : print "½Ç¼öÇü, " if $types[$i] == Msql::REAL_TYPE;
37 : print "ÅؽºÆ®Çü, " if $types[$i] == Msql::TEXT_TYPE;
38 : print "³¯ÀÚÇü, " if $types[$i] == Msql::DATE_TYPE;
39 : print "ºÎÈ£¾ø´Â Á¤¼öÇü, " if $types[$i] == Msql::UINT_TYPE;
40 : print "ÈÆóÇü, " if $types[$i] == Msql::MONEY_TYPE;
41 : print "½Ã°£Çü, " if $types[$i] == Msql::TIME_TYPE;
42 : };
43 :
44 : do {
45 : print "ÇÊ¿äÇʵå, " if $isnull[$i] == 0;
46 : print "Á¶°ÇÇʵå, " if $isnull[$i] != 0;
47 : };
48 :
49 : print "$length[$i] ¹ÙÀÌÆ® <br>\n";
50 : }
51 :
52 : print "</ul><p>\n";
53 :
54 : print &HtmlBot;
½ÇÇà°á°ú
¼³¸í
- 1~12
- listdb.cgi, listtb.cgi¿Í µ¿ÀÏÇÏ´Ù. msqlperlÀ» ÀÌ¿ëÇؼ dB ¿£Áø¿¡ Á¢¼ÓÇÏ°í Á¢¼ÓµÈ ¿£ÁøÀ¸·ÎºÎÅÍ µ¥ÀÌÅͺ£À̽º¸¦ ¼±ÅÃÇÏ´Â ºÎºÐÀÌ´Ù.
- $sth = $dbh->listfields($in{'table'});
- µ¥ÀÌÅͺ£À̽º·ÎºÎÅÍ ÁöÁ¤µÈ Å×À̺íÀÇ ½ºÅ°¸¶¸¦ °¡Á®¿Â´Ù. µ¥ÀÌÅͺ£À̽ºÀÇ À̸§°ú Å×À̺íÀÇ À̸§Àº listtb.cgi·ÎºÎÅÍ Àü´ÞµÈ´Ù.
- 16~19
- listfields ¸Þ¼Òµå°¡ Á¦´ë·Î ¼öÇàµÇ¾ú´ÂÁö´Â °Ë»çÇÏ´Â ¹®ÀåÀÌ´Ù. listfieldsÀÇ ¼öÇàÀÌ ¼º°øÀûÀ̶ó¸é $sth´Â ½ºÅ×ÀÌÆ®¸ÕÆ® ÇîµéÀ» °®°ÔµÇ¸ç, ±×·¸Áö ¸øÇÑ °æ¿ì¿¡´Â Á¤ÀǵÇÁö ¾Ê´Â´Ù.
µû¶ó¼ $sth°¡ Á¤ÀǵǾú´ÂÁö(ÃʱâȵǾú´ÂÁö)¸¦ °Ë»çÇؼ Á¤ÀǵÇÁö ¾ÊÀº °æ¿ì, ¿À·ù¸Þ½ÃÁö¸¦ CgiDie¸¦ ÅëÇØ Ãâ·ÂÇÏ´Â ¹®ÀåÀÌ´Ù.
$dbh->errmsg;´Â ÀÌÀü ÁúÀÇ°¡ ½ÇÆÐÇÑ °æ¿ì ¿À·ù¸Þ½ÃÁö¸¦ ¸®ÅÏÇÑ´Ù. ÀÌ ¸Þ½ÃÁö´Â msql ¸ð´ÏÅÍ ÇÁ·Î±×·¥À» »ç¿ëÇÒ ¶§ Ãâ·ÂµÇ´Â ¸Þ½ÃÁö¿Í Á¤È®È÷ µ¿ÀÏÇϹǷΠSQL ¹®ÀÇ ¿À·ù¸¦ °Ë»çÇϴµ¥ ¾ÆÁÖ Áß¿äÇÑ ¸Þ¼ÒµåÀÌ´Ù.
16 : unless(defined($sth)) {
17 : $msg = $dbh->errmsg;
18 : CgiDie("$msg");
19 : }
- 21~24
- ½ºÅ×ÀÌÆ®¸ÕÆ® ÇÚµé($sth)À» ÀÌ¿ëÇؼ ÇÊ¿äÇÑ ¸ÞŸµ¥ÀÌŸ(Çʵå¸í, ÇʵåŸÀÔ, Not null ¿©ºÎ, ±æÀÌ)¸¦ °¡Á®¿Í¼ ¹è¿·Î ÀúÀåÇÑ´Ù.
- 34~41
- ÇʵåŸÀÔÀ» ÆÇÁ¤ÇϱâÀ§ÇØ MsqlÀÇ ³»ºÎ »ó¼ö¸¦ »ç¿ëÇß´Ù. °¢°¢ÀÇ ³»ºÎ »ó¼ö´Â ´ÙÀ½°ú °°Àº °ªÀ» °®´Â´Ù.
Msql::INT_TYPE 1 # Á¤¼öÇü
Msql::CHAR_TYPE 2 # ¹®ÀÚÇü
Msql::REAL_TYPE 3 # ½Ç¼öÇü
Msql::IDENT_TYPE 4 #Ident Çü
Msql::NULL_TYPE 5 # Null Çü
Msql::TEXT_TYPE 6 # ÅؽºÆ®Çü
Msql::DATE_TYPE 7 # ³¯ÀÚÇü
Msql::UINT_TYPE 8 #Á¤¼öÇü(ºÎÈ£¾ø´Â)
Msql::MONEY_TYPE 9 # ÈÆóÇü
Msql::TIME_TYPE 10 # ½Ã°£Çü
Msql::IDX_TYPE 253 #À妽º
Msql::SYSVAR_TYPE 254 # ½Ã½ºÅÛ º¯¼ö
- 26~54
- °¡Á®¿Â ½ºÅ°¸¶¸¦ HTML·Î Ãâ·ÂÇÏ´Â ¹®ÀåÀÌ´Ù. ÀϹÝÀûÀÎ ±¸¼ºÀº ¾ÕºÎºÐ°ú µ¿ÀÏÇϸç, ºí·Ïȸ¦ À§ÇØ do{..};¹®À» »ç¿ëÇß´Ù.