奇趣技术网 收藏本站
设为主页
商务合作
首页 新闻中心 行业动态 软件新闻 安全资讯 病毒预警 漏洞发布 操作系统 Dos Win9x Win2000 WinXP Win2003 WinVista Linux Unix
数据库 DB2 Access MSSQL MySQL Oracle Sybase 编程技术 ASP PHP JSP CGI/Perl XML .Net C/C++/C# VB VC Delphi Java 汇编
安全技术 安全教学 工具介绍 漏洞利用 病毒防范 入侵检测 防火墙 安全防范 汉化破解 攻击实例 加密解密 技术论坛
中华网络安全联盟 >> 程序开发 >> Perl >> PERL与MySQL(DBI接口)
程序开发
Asp
PHP
JSP
CGI/Perl
XML
.Net
C/C++/C#
Visual Basic
Visual C++
Delphi
Java
汇编语言
  • LB5000XP论坛配合SERV

  • 获取随机的由大小写字

  • Perl操作Mysql数据库

  • Perl在NT下的快速简便

  • 用Perl制作页面计数器

  • 用Perl语句来代替常用

  • 用 perl 实现文件上传

  • perl 域名查询程序

  • PERL与MySQL(DBI接口)
    字体:

    中华网络安全联盟    作者:佚名    来源:网络转载    时间:2006-3-21


    通用DBI方法
    <TABLE border=1 cellSpacing=1 width=624>
    <TBODY>
    <TR>
    <TD vAlign=center>
    <P align=justify><SPAN class=text1>connect </SPAN></P></TD>
    <TD vAlign=center>
    <P align=justify><SPAN class=text1>建立与一个数据库服务器的连接</SPAN></P></TD></TR>
    <TR>
    <TD vAlign=center>
    <P align=justify><SPAN class=text1>prepare </SPAN></P></TD>
    <TD vAlign=center>
    <P align=justify><SPAN class=text1>获取准备执行的SQL语句</SPAN></P></TD></TR>
    <TR>
    <TD vAlign=center>
    <P align=justify><SPAN class=text1>do </SPAN></P></TD>
    <TD vAlign=center>
    <P align=justify><SPAN class=text1>准备并执行一个SQL语句</SPAN></P></TD></TR>
    <TR>
    <TD vAlign=center>
    <P align=justify><SPAN class=text1>disconnect </SPAN></P></TD>
    <TD vAlign=center>
    <P align=justify><SPAN class=text1>断开与一个数据库服务器的连接</SPAN></P></TD></TR>
    <TR>
    <TD vAlign=center>
    <P align=justify><SPAN class=text1>quote </SPAN></P></TD>
    <TD vAlign=center>
    <P align=justify><SPAN class=text1>被插入引用字符串(块)</SPAN></P></TD></TR>
    <TR>
    <TD vAlign=center>
    <P align=justify><SPAN class=text1>execute </SPAN></P></TD>
    <TD vAlign=center>
    <P align=justify><SPAN class=text1>执行存储过程</SPAN></P></TD></TR>
    <TR>
    <TD vAlign=center>
    <P align=justify><SPAN class=text1>fetchrow_array </SPAN></P></TD>
    <TD vAlign=center>
    <P align=justify><SPAN class=text1>取出下一行到一个数组之中</SPAN></P></TD></TR>
    <TR>
    <TD vAlign=center>
    <P align=justify><SPAN class=text1>fetchrow_arrayref </SPAN></P></TD>
    <TD vAlign=center>
    <P align=justify><SPAN class=text1>取出下一行到数组中,返回数组的引用</SPAN></P></TD></TR>
    <TR>
    <TD vAlign=center>
    <P align=justify><SPAN class=text1>fetchrow_hashref </SPAN></P></TD>
    <TD vAlign=center>
    <P align=justify><SPAN class=text1>取出下一行到哈希表,返回其引用</SPAN></P></TD></TR>
    <TR>
    <TD vAlign=center>
    <P align=justify><SPAN class=text1>fetchall_arrayref </SPAN></P></TD>
    <TD vAlign=center>
    <P align=justify><SPAN class=text1>取出所有的数据到一个数组,返回其引用。</SPAN></P></TD></TR>
    <TR>
    <TD vAlign=center>
    <P align=justify><SPAN class=text1>finish </SPAN></P></TD>
    <TD vAlign=center>
    <P align=justify><SPAN class=text1>结束语句、释放系统资源</SPAN></P></TD></TR>
    <TR>
    <TD vAlign=center>
    <P align=justify><SPAN class=text1>rows </SPAN></P></TD>
    <TD vAlign=center>
    <P align=justify><SPAN class=text1>返回作用的行的数目</SPAN></P></TD></TR>
    <TR>
    <TD vAlign=center>
    <P align=justify><SPAN class=text1>data_sources </SPAN></P></TD>
    <TD vAlign=center>
    <P align=justify><SPAN class=text1>返回本机中可用的数据库的数组。</SPAN></P></TD></TR>
    <TR>
    <TD vAlign=center>
    <P align=justify><SPAN class=text1>ChopBlanks </SPAN></P></TD>
    <TD vAlign=center>
    <P align=justify><SPAN class=text1>去除空格 </SPAN></P></TD></TR>
    <TR>
    <TD vAlign=center>
    <P align=justify><SPAN class=text1>NUM_OF_PARAMS </SPAN></P></TD>
    <TD vAlign=center>
    <P align=justify><SPAN class=text1>存储过程中占位符的数目</SPAN></P></TD></TR>
    <TR>
    <TD vAlign=center>
    <P align=justify><SPAN class=text1>NULLABLE </SPAN></P></TD>
    <TD vAlign=center>
    <P align=justify><SPAN
    class=text1>哪一个行允许Null。</SPAN></P></TD></TR></TBODY></TABLE><STRONG>
    <P align=justify><SPAN class=text1>MySQL 的特殊方法</SPAN></P></STRONG>
    <TABLE border=1 cellSpacing=1 width=624>
    <TBODY>
    <TR>
    <TD vAlign=center>
    <P align=justify><SPAN class=text1>insertid </SPAN></P></TD>
    <TD vAlign=center>
    <P align=justify><SPAN class=text1>最后自动递增的值</SPAN></P></TD></TR>
    <TR>
    <TD vAlign=center>
    <P align=justify><SPAN class=text1>is_blob </SPAN></P></TD>
    <TD vAlign=center>
    <P align=justify><SPAN class=text1>为BLOB的行</SPAN></P></TD></TR>
    <TR>
    <TD vAlign=center>
    <P align=justify><SPAN class=text1>is_key </SPAN></P></TD>
    <TD vAlign=center>
    <P align=justify><SPAN class=text1>为键的行</SPAN></P></TD></TR>
    <TR>
    <TD vAlign=center>
    <P align=justify><SPAN class=text1>is_num </SPAN></P></TD>
    <TD vAlign=center>
    <P align=justify><SPAN class=text1>为数字的行</SPAN></P></TD></TR>
    <TR>
    <TD vAlign=center>
    <P align=justify><SPAN class=text1>is_pri_key </SPAN></P></TD>
    <TD vAlign=center>
    <P align=justify><SPAN class=text1>为主键的行</SPAN></P></TD></TR>
    <TR>
    <TD vAlign=center>
    <P align=justify><SPAN class=text1>is_not_null </SPAN></P></TD>
    <TD vAlign=center>
    <P align=justify><SPAN class=text1>不能为NULL的行</SPAN></P></TD></TR>
    <TR>
    <TD vAlign=center>
    <P align=justify><SPAN class=text1>length </SPAN></P></TD>
    <TD vAlign=center>
    <P align=justify><SPAN class=text1>理论上最大的列的数目</SPAN></P></TD></TR>
    <TR>
    <TD vAlign=center>
    <P align=justify><SPAN class=text1>max_length </SPAN></P></TD>
    <TD vAlign=center>
    <P align=justify><SPAN class=text1>物理上最大的列的数目</SPAN></P></TD></TR>
    <TR>
    <TD vAlign=center>
    <P align=justify><SPAN class=text1>NAME </SPAN></P></TD>
    <TD vAlign=center>
    <P align=justify><SPAN class=text1>列名</SPAN></P></TD></TR>
    <TR>
    <TD vAlign=center>
    <P align=justify><SPAN class=text1>NUM_OF_FIELDS </SPAN></P></TD>
    <TD vAlign=center>
    <P align=justify><SPAN class=text1>返回的字段的数目</SPAN></P></TD></TR>
    <TR>
    <TD vAlign=center>
    <P align=justify><SPAN class=text1>table </SPAN></P></TD>
    <TD vAlign=center>
    <P align=justify><SPAN class=text1>返回的集中的表的名称</SPAN></P></TD></TR>
    <TR>
    <TD vAlign=center>
    <P align=justify><SPAN class=text1>type </SPAN></P></TD>
    <TD vAlign=center>
    <P align=justify><SPAN class=text1>行的类型</SPAN></P></TD></TR>
    <TR>
    <TD vAlign=center>
    <P align=justify><SPAN class=text1>_CreateDB </SPAN></P></TD>
    <TD vAlign=center>
    <P align=justify><SPAN class=text1>创建一个数据库</SPAN></P></TD></TR>
    <TR>
    <TD vAlign=center>
    <P align=justify><SPAN class=text1>_DropDB </SPAN></P></TD>
    <TD vAlign=center>
    <P align=justify><SPAN class=text1>删除一个数据库</SPAN></P></TD></TR></TBODY></TABLE>
    connect
    建立与一个数据库服务器的连接

    prepare
    获取准备执行的SQL语句

    do
    准备并执行一个SQL语句

    disconnect
    断开与一个数据库服务器的连接

    quote
    被插入引用字符串(块)

    execute
    执行存储过程

    fetchrow_array
    取出下一行到一个数组之中

    fetchrow_arrayref
    取出下一行到数组中,返回数组的引用

    fetchrow_hashref
    取出下一行到哈希表,返回其引用

    fetchall_arrayref
    取出所有的数据到一个数组,返回其引用。

    finish
    结束语句、释放系统资源

    rows
    返回作用的行的数目

    data_sources
    返回本机中可用的数据库的数组。

    ChopBlanks
    去除空格

    NUM_OF_PARAMS
    存储过程中占位符的数目

    NULLABLE
    哪一个行允许Null。

    MySQL 的特殊方法

    insertid
    最后自动递增的值

    is_blob
    为BLOB的行

    is_key
    为键的行

    is_num
    为数字的行

    is_pri_key
    为主键的行

    is_not_null
    不能为NULL的行

    length
    理论上最大的列的数目

    max_length
    物理上最大的列的数目

    NAME
    列名

    NUM_OF_FIELDS
    返回的字段的数目

    table
    返回的集中的表的名称

    type
    行的类型

    _CreateDB
    创建一个数据库

    _DropDB
    删除一个数据库

     
    connect:
    使用connect方法建立一个到数据源的连接。$data_source应该以DBI:driver_name:开始,例如:

    $dbh = DBI->connect("DBI:mysql:$database", $user, $password);
    $dbh = DBI->connect("DBI:mysql:$database:$hostname",
    $user, $password);
    $dbh = DBI->connect("DBI:mysql:$database:$hostname:$port",
    $user, $password);
    如果用户名或者是口令没有定义的话,那么DBI将使用DBI_USER,DBI_PASS环境变量分别作为其值。如果你没有定义主机的话,那么默认的是“localhost”,如果你没有定义端口号的话,以默认的mysql的端口号(3306)作为端口号。
     
    prepare:
    通过数据库引擎预备SQL语句并且返回一个语句句柄($sth)用于参与execute方法,例如:

    $sth = $dbh->prepare($statement) or die "Can't prepare $statement:
    $dbh->errstr\n";
    do
    do方法预备并执行一个SQL语句,返回作用的行的数目,这个方法通常用于非select的语句,同时一般不需要执行多次(例如:insert,delete等)。例如:

    $rc = $dbh->do($statement) or
    die "Can't execute $statement: $dbh- >errstr\n";
    disconnect
    disconnect将断开与数据库的连接,通常在程序结束的时候使用。例如:

    $rc = $dbh->disconnect;
    quote
    quote方法用于 "escape"任何在字符串中的特定自负,并且加上引用标记。

    $sql = $dbh->quote($string)
    execute
    该方法执行一个存储的语句。对于非select的语句来说,它返回作用的行的数目,对于select语句来说,该方法仅仅是开始了在数据库中查询,你需要fetch_*方法来取回数据。

    $rv = $sth->execute or die "can't execute the query: $sth->errstr;
    fetchrow_array
    这个方法取回下一行的数据,并且将其存储在一个数组之中。例如:

    while(@row = $sth->fetchrow_array) {
    print qw($row[0]\t$row[1]\t$row[2]\n);
    }
    fetchrow_arrayref
    这个方法取回下一行的数据,并将其返回在一个对数组的引用之中。例如:

    while($row_ref = $sth->fetchrow_arrayref) {
    print qw($row_ref->[0]\t$row_ref->[1]\t$row_ref->[2]\n);
    }
    fetchrow_hashref
    这个方法取回一行数据,并且返回一个到包含了字段名/值的哈希表的引用。这个方法不如使用一个数组引用的方法有效率。例如:

    while($hash_ref = $sth->fetchrow_hashref) {
    print qw($hash_ref->{firstname}\t$hash_ref->{lastname}\t\
    $hash_ref- > title}\n);
    }
    fetchall_arrayref
    这个方法被用来从一个SQL语句的执行结果中取回所有的数据(行)。它返回一个数组的引用,你可以通过一个循环来打印/显示这些数据。

    my $table = $sth->fetchall_arrayref or die "$sth->errstr\n";
    my($i, $j);
    for $i ( 0 .. $#{$table} ) {
    for $j ( 0 .. $#{$table->[$i]} ) {
    print "$table->[$i][$j]\t";
    }
    print "\n";
    }
    finish
    指示没有更多的数据可以被取出,你可以通过这个方法释放语句句柄,并且释放系统资源。例如:
    $rc = $sth->finish;
    rows
    返回在(updated,delete等)操作中作用的行的数目。这通常被用在do()或者非select的execute()语句之后。例如:

    $rv = $sth->rows;
    NULLABLE
    返回一个数组的引用,TRUE分别表示这个列可以允许NULL。

    $null_possible = $sth->{NULLABLE};
    NUM_OF_FIELDS
    通过SELECT或者LISTFILEDS语句返回的列的数目。如果数目为0表示一个非SELECT语句的执行,例如,INSERT,DELETE或者UPDATE等。

    $nr_of_fields = $sth->{NUM_OF_FIELDS};
    data_sources
    这个方法返回在localhost中的mysql服务中可用的数据库的数组。

    @dbs = DBI->data_sources("mysql");
    ChopBlanks
    这个方法决定了返回的行中是否去除空格。

    $sth->{'ChopBlanks') =1;

    <MySQL 特定方法>

    insertid
    如果你使用了mysql的自动增值的特性,那么最新的自动增值将被存储。例如:

    $new_id = $sth->{insertid};
    is_blob
    返回一个数组的引用,TRUE分别表示所指示的列是BLOB。

    $keys = $sth->{is_blob};
    is_key
    返回一个数组的引用,TRUE分别表示所指示的列是KEY。

    $keys = $sth->{is_key};
    is_num
    返回一个数组的引用,TRUE分别表示所指示的列包含了数字。

    $nums = $sth->{is_num};
    is_pri_key
    返回一个数组的引用,TRUE分别表示所指示的列是一个主键。

    $pri_keys = $sth->{is_pri_key};
    is_not_null
    返回一个数组的引用,FALSE表示这个列可以包含NULL,而你最好使用DBI标准中的NULLABLE属性。

    $not_nulls = $sth->{is_not_null};
    max_length、length
    返回一个指示最大列的尺寸的数组的引用。最大长度是指在结果的表中的最大数值,LENGTH给出了理论上的最大值。

    $max_lengts = $sth->{max_length};
    $lengts = $sth->{length};
    NAME
    返回一个列名称的数组的引用。

    $names = $sth->{NAME};
    table
    返回了表名称的数组的引用。

    $tables = $sth->{table};

    字体:
     
    设为主页 收藏本站 联系我们 友情连接 商务合作 网友留言
    Copyright©2006-2008 中华网络安全联盟 All rights reserved.