À¥°ú DBÀÇ ¿¬µ¿Àº ´ëºÎºÐ ºñ½ÁÇÑ ÀýÂ÷(DB ¿£Áø Á¢¼Ó, DB ¼±ÅÃ, ÁúÀÇ, °á°úÃâ·Â)¸¦ °ÅÄ¡¸ç, ÁúÀǸ¦ ¼öÇàÇÏ´Â SQL ¹®¸¸ Â÷ÀÌ°¡ ³´Ù.
»ç¿ëÀÚ°¡ µ¥ÀÌÅ͸¦ Á÷Á¢ÀÔ·ÂÇÏ´Â °Íµµ ´ëºÎºÐÀº °Ë»ö CGI¿Í À¯»çÇϸé Â÷ÀÌ°¡ ³ª´Â ºÎºÐÀº SQL¹®¿¡ ºÒ°úÇÏ´Ù.
ÀÔ·ÂÆû(dbinsert.html)
»ç¿ëÀÚÀÇ ÀÔ·ÂÀ» ¹Þ¾ÆµéÀÌ´Â Æû¹®¼ÀÌ´Ù. Çѹø¿¡ 5¸íÀÇ »ç¿ëÀÚ¸¦ ÀÔ·ÂÇÒ ¼ö ÀÖµµ·Ï ÀÛ¼ºµÆ´Ù.
¼Ò½º
1 : <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
2 : <HTML>
3 : <HEAD>
4 : <TITLE>ÇÐÀûºÎ °ü¸®</TITLE>
5 : <META HTTP-EQUIV="content-type" CONTENT="text/html; charset=EUC-KR">
6 : </HEAD>
7 :
8 : <BODY>
9 :
10 : <H2> µ¥ÀÌŸ »ðÀÔ </H2>
11 : <hr noshade size=4>
12 :
13 : <div align=CENTER>
14 : <FORM ACTION="/~artech/cgi-bin/dbinsert.cgi" METHOD="post">
15 : <table border="1" cellpadding="0" cellspacing="2">
16 : <TR>
17 : <TH>ÇС¡¡¡¹ø</TH>
18 : <TH>ÀÌ¡¡¡¡¸§</TH>
19 : <TH>Àü¡¡¡¡È</TH>
20 : <TH>°Á¹øÈ£</TH>
21 : <TH>ÇС¡¡¡°ú</TH>
22 : </TR>
23 : <TR>
24 : <TD><INPUT TYPE="TEXT" NAME="sid1" SIZE="8" MAXLENGTH="8"></TD>
25 : <TD><INPUT TYPE="TEXT" NAME="sname1" SIZE="12" MAXLENGTH="12"></TD>
26 : <TD><INPUT TYPE="TEXT" NAME="phone1" SIZE="15" MAXLENGTH="15"></TD>
27 : <TD><INPUT TYPE="TEXT" NAME="lid1" SIZE="8" MAXLENGTH="8"></TD>
28 : <TD><INPUT TYPE="TEXT" NAME="class1" SIZE="20" MAXLENGTH="20"></TD>
29 : </TR>
30 : <TR>
31 : <TD><INPUT TYPE="TEXT" NAME="sid2" SIZE="8" MAXLENGTH="8"></TD>
32 : <TD><INPUT TYPE="TEXT" NAME="sname2" SIZE="12" MAXLENGTH="12"></TD>
33 : <TD><INPUT TYPE="TEXT" NAME="phone2" SIZE="15" MAXLENGTH="15"></TD>
34 : <TD><INPUT TYPE="TEXT" NAME="lid2" SIZE="8" MAXLENGTH="8"></TD>
35 : <TD><INPUT TYPE="TEXT" NAME="class2" SIZE="20" MAXLENGTH="20"></TD>
36 : </TR>
37 : <TR>
38 : <TD><INPUT TYPE="TEXT" NAME="sid3" SIZE="8" MAXLENGTH="8"></TD>
39 : <TD><INPUT TYPE="TEXT" NAME="sname3" SIZE="12" MAXLENGTH="12"></TD>
40 : <TD><INPUT TYPE="TEXT" NAME="phone3" SIZE="15" MAXLENGTH="15"></TD>
41 : <TD><INPUT TYPE="TEXT" NAME="lid3" SIZE="8" MAXLENGTH="8"></TD>
42 : <TD><INPUT TYPE="TEXT" NAME="class3" SIZE="20" MAXLENGTH="20"></TD>
43 : </TR>
44 : <TR>
45 : <TD><INPUT TYPE="TEXT" NAME="sid4" SIZE="8" MAXLENGTH="8"></TD>
46 : <TD><INPUT TYPE="TEXT" NAME="sname4" SIZE="12" MAXLENGTH="12"></TD>
47 : <TD><INPUT TYPE="TEXT" NAME="phone4" SIZE="15" MAXLENGTH="15"></TD>
48 : <TD><INPUT TYPE="TEXT" NAME="lid4" SIZE="8" MAXLENGTH="8"></TD>
49 : <TD><INPUT TYPE="TEXT" NAME="class4" SIZE="20" MAXLENGTH="20"></TD>
50 : </TR>
51 : <TR>
52 : <TD><INPUT TYPE="TEXT" NAME="sid5" SIZE="8" MAXLENGTH="8"></TD>
53 : <TD><INPUT TYPE="TEXT" NAME="sname5" SIZE="12" MAXLENGTH="12"></TD>
54 : <TD><INPUT TYPE="TEXT" NAME="phone5" SIZE="15" MAXLENGTH="15"></TD>
55 : <TD><INPUT TYPE="TEXT" NAME="lid5" SIZE="8" MAXLENGTH="8"></TD>
56 : <TD><INPUT TYPE="TEXT" NAME="class5" SIZE="20" MAXLENGTH="20"></TD>
57 : </TR>
58 : <TR align=center>
59 : <TD colspan=5>
60 : <INPUT TYPE="SUBMIT" VALUE="º¸³»±â">
61 : <INPUT TYPE="RESET" VALUE="Áö¿ì±â">
62 : </TD>
63 : </TR>
64 : </table>
65 : </FORM>
66 : </div>
67 : </BODY>
68 : </HTML>
°á°ú
»ðÀÔ ÇÁ·Î±×·¥(dbinsert.cgi)
»ç¿ëÀÚÀÇ ÆûÀÔ·ÂÀ» ¹Þ¾Æ ½ÇÁ¦ Å×ÀÌºí¿¡ µ¥ÀÌÅ͸¦ »ðÀÔÇÏ´Â CGIÀÌ´Ù. ¾ÕÀÇ °Ë»ö CGI¿Í °ÅÀÇ ºñ½ÁÇϸç, ¿©·¯ »ç¿ëÀÚÀÇ ÀÔ·ÂÀ» À§ÇØ ¼øȯ¹®À» »ç¿ëÇß´Ù.
¼Ò½º
1 : #! /usr/local/bin/perl
2 : require './cgi-lib.pl';
3 :
4 : $database = 'mhlee';
5 : $table = 'stable';
6 :
7 : ReadParse(*FORM);
8 :
9 : use Msql;
10 :
11 : $dbh = Msql->connect;
12 : defined($dbh) || CgiDie('µ¥ÀÌŸº£À̽º¿¡ Á¢¼ÓÇÒ ¼ö ¾ø½À´Ï´Ù');
13 :
14 : $dbh->selectdb($database);
15 :
16 : for(1..5) {
17 : $sid = "sid$_";
18 : $sname = "sname$_";
19 : $phone = "phone$_";
20 : $lid = "lid$_";
21 : $class = "class$_";
22 :
23 : next if($FORM{$sid} eq '' || $FORM{$sname} eq '' || $FORM{$lid} eq ''
|| $FORM{$class} eq '');
24 :
25 : $insert =<<Query;
26 : insert into $table
27 : values('$FORM{$sid}','$FORM{$sname}', '$FORM{$phone}', $FORM{$lid},
'$FORM{$class}')
28 : Query
29 :
30 : $query =~ tr/[\n,\r]/[ , ]/;
31 :
32 : $sth = $dbh->query($insert);
33 : unless(defined($sth)) {
34 : $msg = $dbh->errmsg;
35 : CgiDie("$msg", $FORM{'query'});
36 : }
37 : }
38 :
39 : $query =<<Query;
40 : select _rowid, sid, sname, phone, lid, class from $table
41 : Query
42 :
43 : $query =~ tr/[\n,\r]/[ , ]/;
44 :
45 : $sth = $dbh->query($query);
46 :
47 : unless(defined($sth)) {
48 : $msg = $dbh->errmsg;
49 : CgiDie("$msg", $FORM{'query'});
50 : }
51 :
52 : @fields = $sth->name;
53 :
54 : print PrintHeader();
55 : print HtmlTop('ÁúÀÇ°á°ú');
56 :
57 : print <<Table;
58 : <div align=center>
59 : <table border=1 celpadding=1>
60 : <tr>
61 : Table
62 :
63 : for(0..$#fields) {
64 : print "<th> $fields[$_] </th>\n";
65 : }
66 :
67 : print "</tr>\n";
68 :
69 : while(@row = $sth->fetchrow) {
70 : print "<tr>\n";
71 : for(0..$#row) {
72 : $row[$_] = ' ' if($row[$_] eq '');
73 : print "<td> $row[$_] </td>\n";
74 : }
75 : print "</tr>\n";
76 : }
77 :
78 : print "</table></div>\n";
79 :
80 : print HtmlBot();
½ÇÇà°á°ú
¼³¸í
- 1~14
- ¾Õ¿¡¼ ÀÛ¼ºÇÑ CGI¿Í °ÅÀÇ ¶È°°´Ù. ´Ù¸¸ µ¥ÀÌÅ͸¦ »ðÀÔ, »èÁ¦, ¼öÁ¤ÇϱâÀ§Çؼ´Â µ¥ÀÌÅͺ£À̽ºÀÇ À̸§°ú Å×À̺íÀÇ À̸§À» ¾Ë°í ÀÖ¾î¾ß ÇϹǷΠÀÌ °ªÀ» CGI ÇÁ·Î±×·¥³»¿¡¼ ÇÒ´çÇÏ´Â Â÷À̸¸ ÀÖ´Ù.
- 16~37
- »ç¿ëÀÚÀÇ ÀÔ·ÂÀ» ¹Ýº¹ÀûÀ¸·Î ¼öÇàÇÏ´Â ¹®ÀåÀÌ´Ù. ÀÌ ¼øȯ¹®À» ÅëÇØ 5¹øÀÇ SQL(insert)¹®ÀÌ ¼öÇàµÈ´Ù.
23ÇàÀº Not Null ¼Ó¼ºÀÌ ºÎ¿©µÈ Çʵ尡 NullÀÎ °æ¿ì ¼øȯ¹®À» ´Ù½Ã ½ÃÀÛÇϵµ·Ï next¹®À» »ç¿ëÇÏ°í ÀÖ´Ù.
25~28ÇàÀº $insert¶ó´Â º¯¼ö¿¡ SQL¹®À» ÇÒ´çÇÏ´Â ¹®ÀåÀÌ´Ù. ½ÇÁ¦ ÁúÀÇ°¡ ¼öÇàµÇ´Â °ÍÀº ¾Æ´Ï¸ç ´ÜÁö SQL¹®¸¸ ÇÒ´çÇÏ°í ÀÖ´Ù. query ¸Þ¼Òµå¿¡ Á÷Á¢ÀÔ·ÂÇصµ µÇÁö¸¸ °¡µ¶¼ºÀ» À§ÇØ µû·Î ºÐ¸®ÇÑ °ÍÀÌ´Ù.
32Çà¿¡¼ ½ÇÁ¦ ÁúÀÇ°¡ ¼öÇàµÇ¸ç, ¿À·ù°¡ ¹ß»ýÇÒ °æ¿ì 33~36ÇàÀÌ ¼öÇàµÈ´Ù.
- 39~41
- $query¶ó´Â º¯¼ö¿¡ SQL¹®À» ÇÒ´çÇÏ´Â ¹®ÀåÀÌ´Ù. ÀϹÝÀûÀ¸·Î INSERT, UPDATE, DELETE¿Í °°Àº SQL¹®Àº Row µ¥ÀÌÅ͸¦ ¸®ÅÏÇÏÁö ¾ÊÀ¸¹Ç·Î ½ÇÁ¦ µ¥ÀÌÅÍ°¡ Á¦´ë·Î »ðÀԵƴÂÁö È®ÀÎÇϱâÀ§ÇÑ °Ë»ö ÁúÀǹ®ÀÌ´Ù.
- 45~80
- °Ë»ö CGI¿Í ¿ÏÀüÈ÷ µ¿ÀÏÇÏ´Ù. 39~41¿¡¼ ÇÒ´çÇÑ SQL¹®À» mSQL DB ¿£Áø¿¡ Àü¼ÛÇÏ°í ±× °á°ú¸¦ HTML Ç¥·Î º¯È¯ÇÏ´Â ºÎºÐÀÌ´Ù.