⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 00000000.htm

📁 一份很好的linux入门资料
💻 HTM
📖 第 1 页 / 共 3 页
字号:
#&nbsp;All&nbsp;of&nbsp;the&nbsp;above&nbsp;arrays&nbsp;were&nbsp;returned&nbsp;in&nbsp;the&nbsp;same&nbsp;order,&nbsp;so&nbsp;that&nbsp;$fields[0],&nbsp;<BR>#&nbsp;$types[0],&nbsp;$not_null[0]&nbsp;and&nbsp;$length[0]&nbsp;all&nbsp;refer&nbsp;to&nbsp;the&nbsp;same&nbsp;field.&nbsp;<BR>&nbsp;&nbsp;<BR>foreach&nbsp;$field&nbsp;(0..$#fields)&nbsp;{&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print&nbsp;&quot;&lt;TR&gt;\n&quot;;&nbsp;<BR>print&nbsp;&quot;&lt;TD&gt;$fields[$field]&lt;TD&gt;$types[$field]&lt;TD&gt;&quot;;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print&nbsp;$length[$field]&nbsp;if&nbsp;$types[$field]&nbsp;eq&nbsp;'SQL_CHAR';&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print&nbsp;&quot;&lt;TD&gt;&quot;;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print&nbsp;'Y'&nbsp;if&nbsp;($not_null[$field]);&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print&nbsp;&quot;&lt;/tr&gt;\n&quot;;&nbsp;<BR>}&nbsp;<BR>&nbsp;&nbsp;<BR>print&nbsp;&lt;&lt;END_OF_HTML;&nbsp;<BR>&lt;/table&gt;&nbsp;<BR>&lt;p&gt;&nbsp;<BR>&lt;B&gt;Data&lt;/b&gt;&lt;br&gt;&nbsp;<BR>&lt;OL&gt;&nbsp;<BR>END_OF_HTML&nbsp;<BR>&nbsp;&nbsp;<BR>#&nbsp;Now&nbsp;we&nbsp;step&nbsp;through&nbsp;the&nbsp;data,&nbsp;row&nbsp;by&nbsp;row,&nbsp;using&nbsp;DBI::fetchrow_array().&nbsp;<BR>#&nbsp;We&nbsp;save&nbsp;the&nbsp;data&nbsp;in&nbsp;an&nbsp;array&nbsp;that&nbsp;has&nbsp;the&nbsp;same&nbsp;order&nbsp;as&nbsp;the&nbsp;informational&nbsp;<BR>#&nbsp;arrays&nbsp;(@fields,&nbsp;@types,&nbsp;etc.)&nbsp;we&nbsp;created&nbsp;earlier.&nbsp;<BR>while(my(@data)=$table_data-&gt;fetchrow_array)&nbsp;{&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print&nbsp;&quot;&lt;LI&gt;\n&lt;UL&gt;&quot;;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(0..$#data)&nbsp;{&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print&nbsp;&quot;&lt;LI&gt;$fields[$_]&nbsp;=&gt;&nbsp;$data[$_]&lt;/li&gt;\n&quot;;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print&nbsp;&quot;&lt;/ul&gt;&lt;/li&gt;&quot;;&nbsp;<BR>}&nbsp;<BR>&nbsp;&nbsp;<BR>print&nbsp;&lt;&lt;END_OF_HTML;&nbsp;<BR>&lt;/ol&gt;&nbsp;<BR>&lt;/body&gt;&lt;/html&gt;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;END_OF_HTML&nbsp;<BR>An&nbsp;Example&nbsp;DBI&nbsp;Application&nbsp;<BR>DBI&nbsp;allows&nbsp;for&nbsp;the&nbsp;full&nbsp;range&nbsp;of&nbsp;SQL&nbsp;queries&nbsp;supported&nbsp;by&nbsp;MySQL&nbsp;and&nbsp;mSQL.&nbsp;As&nbsp;an&nbsp;example,&nbsp;consider&nbsp;a&nbsp;database&nbsp;used&nbsp;by&nbsp;a&nbsp;school&nbsp;to&nbsp;keep&nbsp;track&nbsp;of&nbsp;student&nbsp;records,&nbsp;class&nbsp;schedules,&nbsp;test&nbsp;scores,&nbsp;and&nbsp;so&nbsp;on.&nbsp;The&nbsp;database&nbsp;would&nbsp;contain&nbsp;several&nbsp;tables,&nbsp;one&nbsp;for&nbsp;&nbsp;<BR>class&nbsp;information,&nbsp;one&nbsp;for&nbsp;student&nbsp;information,&nbsp;one&nbsp;containing&nbsp;a&nbsp;list&nbsp;of&nbsp;tests,&nbsp;and&nbsp;a&nbsp;table&nbsp;for&nbsp;each&nbsp;test.&nbsp;MySQL&nbsp;and&nbsp;mSQL's&nbsp;ability&nbsp;to&nbsp;access&nbsp;data&nbsp;across&nbsp;tables--such&nbsp;as&nbsp;the&nbsp;table-joining&nbsp;feature--enables&nbsp;all&nbsp;of&nbsp;these&nbsp;tables&nbsp;to&nbsp;be&nbsp;used&nbsp;together&nbsp;as&nbsp;a&nbsp;&nbsp;<BR>coherent&nbsp;whole&nbsp;to&nbsp;form&nbsp;a&nbsp;teacher's&nbsp;aide&nbsp;application.&nbsp;<BR>&nbsp;<BR>To&nbsp;begin&nbsp;with&nbsp;we&nbsp;are&nbsp;interested&nbsp;in&nbsp;creating&nbsp;tests&nbsp;for&nbsp;the&nbsp;various&nbsp;subjects.&nbsp;To&nbsp;do&nbsp;this&nbsp;we&nbsp;need&nbsp;a&nbsp;table&nbsp;that&nbsp;contains&nbsp;names&nbsp;and&nbsp;ID&nbsp;numbers&nbsp;for&nbsp;the&nbsp;tests.&nbsp;We&nbsp;also&nbsp;need&nbsp;a&nbsp;separate&nbsp;table&nbsp;for&nbsp;each&nbsp;test.&nbsp;This&nbsp;table&nbsp;will&nbsp;contain&nbsp;the&nbsp;scores&nbsp;for&nbsp;all&nbsp;of&nbsp;the&nbsp;&nbsp;<BR>students&nbsp;as&nbsp;well&nbsp;as&nbsp;a&nbsp;perfect&nbsp;score&nbsp;for&nbsp;comparison.&nbsp;The&nbsp;test&nbsp;table&nbsp;has&nbsp;the&nbsp;following&nbsp;structure:&nbsp;<BR>&nbsp;<BR>CREATE&nbsp;TABLE&nbsp;test&nbsp;(&nbsp;<BR>&nbsp;&nbsp;id&nbsp;INT&nbsp;NOT&nbsp;NULL&nbsp;AUTO_INCREMENT,&nbsp;<BR>&nbsp;&nbsp;name&nbsp;CHAR(100),&nbsp;<BR>&nbsp;&nbsp;subject&nbsp;INT,&nbsp;<BR>&nbsp;&nbsp;num&nbsp;INT&nbsp;<BR>)&nbsp;&nbsp;<BR>The&nbsp;individual&nbsp;tests&nbsp;have&nbsp;table&nbsp;structures&nbsp;like&nbsp;this:&nbsp;<BR>&nbsp;<BR>CREATE&nbsp;TABLE&nbsp;t7&nbsp;(&nbsp;<BR>&nbsp;&nbsp;id&nbsp;INT&nbsp;NOT&nbsp;NULL,&nbsp;<BR>&nbsp;&nbsp;q1&nbsp;INT,&nbsp;<BR>&nbsp;&nbsp;q2&nbsp;INT,&nbsp;<BR>&nbsp;&nbsp;q3&nbsp;INT,&nbsp;<BR>&nbsp;&nbsp;q4&nbsp;INT,&nbsp;<BR>&nbsp;&nbsp;total&nbsp;INT&nbsp;<BR>)&nbsp;&nbsp;<BR>The&nbsp;table&nbsp;name&nbsp;is&nbsp;t&nbsp;followed&nbsp;by&nbsp;the&nbsp;test&nbsp;ID&nbsp;number&nbsp;from&nbsp;the&nbsp;test&nbsp;table.&nbsp;The&nbsp;user&nbsp;determines&nbsp;the&nbsp;number&nbsp;of&nbsp;questions&nbsp;when&nbsp;he&nbsp;or&nbsp;she&nbsp;creates&nbsp;the&nbsp;table.&nbsp;The&nbsp;total&nbsp;field&nbsp;is&nbsp;the&nbsp;sum&nbsp;of&nbsp;all&nbsp;of&nbsp;the&nbsp;questions.&nbsp;<BR>&nbsp;<BR>The&nbsp;program&nbsp;that&nbsp;accesses&nbsp;and&nbsp;manipulates&nbsp;the&nbsp;test&nbsp;information&nbsp;is&nbsp;test.cgi.&nbsp;This&nbsp;program,&nbsp;which&nbsp;follows,&nbsp;allows&nbsp;only&nbsp;for&nbsp;adding&nbsp;new&nbsp;tests.&nbsp;Viewing&nbsp;tests&nbsp;and&nbsp;changing&nbsp;tests&nbsp;is&nbsp;not&nbsp;implemented&nbsp;but&nbsp;is&nbsp;left&nbsp;as&nbsp;an&nbsp;exercise.&nbsp;Using&nbsp;the&nbsp;other&nbsp;scripts&nbsp;in&nbsp;this&nbsp;&nbsp;<BR>chapter&nbsp;as&nbsp;a&nbsp;reference,&nbsp;completing&nbsp;this&nbsp;script&nbsp;should&nbsp;be&nbsp;only&nbsp;a&nbsp;moderate&nbsp;challenge.&nbsp;As&nbsp;it&nbsp;stands,&nbsp;this&nbsp;script&nbsp;effectively&nbsp;demonstrates&nbsp;the&nbsp;capabilities&nbsp;of&nbsp;DBI:[1]&nbsp;<BR>&nbsp;<BR>#!/usr/bin/perl&nbsp;-w&nbsp;<BR>&nbsp;&nbsp;<BR>use&nbsp;strict;&nbsp;<BR>require&nbsp;my_end;&nbsp;<BR>&nbsp;&nbsp;<BR>use&nbsp;CGI&nbsp;qw(:standard);&nbsp;<BR>my&nbsp;$output&nbsp;=&nbsp;new&nbsp;CGI;&nbsp;<BR>use_named_parameters(1);&nbsp;<BR>&nbsp;&nbsp;<BR>#&nbsp;Use&nbsp;the&nbsp;DBI&nbsp;module.&nbsp;<BR>use&nbsp;DBI;&nbsp;<BR>#&nbsp;DBI::connect()&nbsp;uses&nbsp;the&nbsp;format&nbsp;'DBI:driver:database',&nbsp;in&nbsp;our&nbsp;case&nbsp;we&nbsp;are&nbsp;<BR>#&nbsp;using&nbsp;the&nbsp;MySQL&nbsp;driver&nbsp;and&nbsp;accessing&nbsp;the&nbsp;'teach'&nbsp;database.&nbsp;<BR>my&nbsp;$dbh&nbsp;=&nbsp;DBI-&gt;connect('DBI:mysql:teach');&nbsp;<BR>The&nbsp;add&nbsp;action&nbsp;itself&nbsp;is&nbsp;broken&nbsp;up&nbsp;into&nbsp;three&nbsp;separate&nbsp;functions.&nbsp;The&nbsp;first&nbsp;&nbsp;<BR>function,&nbsp;add,&nbsp;prints&nbsp;out&nbsp;the&nbsp;template&nbsp;form&nbsp;for&nbsp;the&nbsp;user&nbsp;to&nbsp;create&nbsp;a&nbsp;new&nbsp;&nbsp;<BR>test.&nbsp;<BR>sub&nbsp;add&nbsp;{&nbsp;<BR>&nbsp;&nbsp;&nbsp;$subject&nbsp;=&nbsp;param('subject')&nbsp;if&nbsp;(param('subjects'));&nbsp;<BR>&nbsp;&nbsp;&nbsp;$subject&nbsp;=&nbsp;&quot;&quot;&nbsp;if&nbsp;$subject&nbsp;eq&nbsp;'all';&nbsp;<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;print&nbsp;header,&nbsp;start_html('title'=&gt;'Create&nbsp;a&nbsp;New&nbsp;Test',&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'BGCOLOR'=&gt;'white');&nbsp;<BR>&nbsp;&nbsp;&nbsp;print&nbsp;&lt;&lt;END_OF_HTML;&nbsp;<BR>&lt;H1&gt;Create&nbsp;a&nbsp;New&nbsp;Test&lt;/h1&gt;&nbsp;<BR>&lt;FORM&nbsp;ACTION=&quot;test.cgi&quot;&nbsp;METHOD=POST&gt;&nbsp;<BR>&lt;INPUT&nbsp;TYPE=HIDDEN&nbsp;NAME=&quot;action&quot;&nbsp;VALUE=&quot;add2&quot;&gt;&nbsp;<BR>Subject:&nbsp;&nbsp;<BR>END_OF_HTML&nbsp;<BR>&nbsp;&nbsp;&nbsp;my&nbsp;@ids&nbsp;=&nbsp;();&nbsp;<BR>&nbsp;&nbsp;&nbsp;my&nbsp;%subjects&nbsp;=&nbsp;();&nbsp;<BR>&nbsp;&nbsp;&nbsp;my&nbsp;$out2&nbsp;=&nbsp;$dbh-&gt;prepare(&quot;select&nbsp;id,name&nbsp;from&nbsp;subject&nbsp;order&nbsp;by&nbsp;name&quot;);&nbsp;<BR>&nbsp;&nbsp;&nbsp;$out2-&gt;execute;&nbsp;<BR>&nbsp;&nbsp;&nbsp;#&nbsp;DBI::fetchrow_array()&nbsp;is&nbsp;exactly&nbsp;analogous&nbsp;to&nbsp;Msql::fetchrow()&nbsp;<BR>&nbsp;&nbsp;&nbsp;while(my($id,$subject)=$out2-&gt;fetchrow_array)&nbsp;{&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;push(@ids,$id);&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$subjects{&quot;$id&quot;}&nbsp;=&nbsp;$subject;&nbsp;<BR>&nbsp;&nbsp;&nbsp;}&nbsp;<BR>&nbsp;&nbsp;&nbsp;print&nbsp;popup_menu('name'=&gt;'subjects',&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'values'=&gt;[@ids],&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'default'=&gt;$subject,&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'labels'=&gt;\%subjects);&nbsp;<BR>&nbsp;&nbsp;&nbsp;print&nbsp;&lt;&lt;END_OF_HTML;&nbsp;<BR>&lt;br&gt;&nbsp;<BR>Number&nbsp;of&nbsp;Questions:&nbsp;&lt;INPUT&nbsp;NAME=&quot;num&quot;&nbsp;SIZE=5&gt;&lt;br&gt;&nbsp;<BR>A&nbsp;name&nbsp;other&nbsp;identifier&nbsp;(such&nbsp;as&nbsp;a&nbsp;date)&nbsp;for&nbsp;the&nbsp;test:&nbsp;&nbsp;<BR>&nbsp;&lt;INPUT&nbsp;NAME=&quot;name&quot;&nbsp;SIZE=20&gt;&nbsp;<BR>&lt;p&gt;&nbsp;<BR>&lt;INPUT&nbsp;TYPE=SUBMIT&nbsp;VALUE=&quot;&nbsp;Next&nbsp;Page&nbsp;&quot;&gt;&nbsp;<BR>&nbsp;&lt;INPUT&nbsp;TYPE=RESET&gt;&nbsp;<BR>&lt;/form&gt;&lt;/body&gt;&lt;/html&gt;&nbsp;<BR>END_OF_HTML&nbsp;<BR>}&nbsp;<BR>&nbsp;&nbsp;<BR>&nbsp;<BR>--&nbsp;<BR>※&nbsp;来源:·BBS&nbsp;水木清华站&nbsp;bbs.net.tsinghua.edu.cn·[FROM:&nbsp;162.105.17.153]&nbsp;<BR><CENTER><H1>BBS水木清华站∶精华区</H1></CENTER></BODY></HTML>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -