移植可能な DBI メソッドおよび属性
| メソッド/属性 | 説明 | 
| connect | データベースサーバへの接続を確立する。 | 
| disconnect | データベースサーバへの接続を切断する。 | 
| prepare | SQL ステートメントを実行するためのプリコンパイルを行う。 | 
| execute | プリペアドステートメントを実行する。 | 
| do | SQL ステートメントをプリコンパイルし、実行する。 | 
| quote | 挿入する文字列または BLOB値を引用符で囲む。 | 
| fetchrow_array | フィールドの配列として次のレコードを取得する。 | 
| fetchrow_arrayref | フィールドの参照配列として次のレコードを取得する。 | 
| fetchrow_hashref | ハッシュテーブルへの参照として次のレコードを取得する。 | 
| fetchall_arrayref | 配列の配列としてすべてのデータを取得する。 | 
| finish | ステートメントの使用を完了して、リソースを解放する。 | 
| rows | 影響を受けたレコードの数を返す。 | 
| data_sources | localhost で使用できるデータベースの配列を返す。 | 
| ChopBlanks | fetchrow_*メソッドで余白を切り取るかどうかを制御する。 | 
| NUM_OF_PARAMS | プリペアドステートメントのプレースホルダの数。 | 
| NULLABLE | どのカラムに NULLを格納できるかを示す。 | 
| trace | デバッグのためにトレースを実行する。 | 
MySQL 固有のメソッドおよび属性
| メソッド/属性 | 説明 | 
| mysql_insertid | 最新の AUTO_INCREMENT値を返す。 | 
| is_blob | どのカラムが BLOB値かを示す。 | 
| is_key | どのカラムがキーかを示す。 | 
| is_num | どのカラムが数値かを示す。 | 
| is_pri_key | どのカラムが主キーかを示す。 | 
| is_not_null | どのカラムに NULLを格納できないかを示す。NULLABLEを参照。 | 
| length | 拡大可能な最大カラムサイズを示す。 | 
| max_length | 結果セットに実際に存在する最大のカラムサイズを示す。 | 
| NAME | カラム名を示す。 | 
| NUM_OF_FIELDS | 結果セットのフィールドの数。 | 
| table | 結果セットのテーブル名を示す。 | 
| type | すべてのカラムの型を示す。 | 
Perl のメソッドについては、以下のセクションで詳細に説明します。メソッドの戻り値に使用される変数には以下の意味があります。
            $dbh
          
データベースハンドル
            $sth
          
ステートメントハンドル
            $rc
          
リターンコード(通常はステータス)
            $rv
          
戻り値(通常はレコード数)
移植可能な DBI メソッドおよび属性
            connect($data_source, $username,
            $password)
          
            connect
            メソッドを使用して、データソースへのデータベース接続を確立する。$data_source
            値は DBI:driver_name:
            で始まる必要がある。DBD::mysql
            ドライバを使用する connect
            の使用例を以下に示す。
$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)が使用される。
          
            Msql-Mysql-modules バージョン 1.2009
            の時点では、$data_source
            値に特定の修飾子を使用できる。
          
                mysql_read_default_file=file_name
              
                file_name
                をオプション設定ファイルとして読み込む。オプション設定ファイルについては、項4.1.2. 「my.cnf オプション設定ファイル」
                を参照すること。
              
                mysql_read_default_group=group_name
              
                オプション設定ファイルを読み込むときのデフォルトグループは、通常は
                [client]
                グループである。mysql_read_default_group
                オプションを指定することによって、デフォルトグループは
                [group_name] グループになる。
              
                mysql_compression=1
              
クライアントとサーバ間で圧縮された通信を使用する(MySQL バージョン 3.22.3 以降)。
                mysql_socket=/path/to/socket
              
サーバへの接続に使用する Unix ソケットのパス名を指定する(MySQL バージョン 3.21.15 以降)。
複数の修飾子をセミコロンで区切って指定できる。
            たとえば、ユーザ名およびパスワードを
            DBI
            スクリプトにハードコードすることを避けるには、以下のように
            connect
            の呼び出しを記述して、ユーザの
            ~/.my.cnf
            オプション設定ファイルからユーザ名およびパスワードを読み込む。
          
$dbh = DBI->connect("DBI:mysql:$database"
                . ";mysql_read_default_file=$ENV{HOME}/.my.cnf",
                $user, $password);
            この呼び出しによって、オプション設定ファイルの
            [client]
            グループに定義されたオプションが読み込まれる。上記と同じ処理を、[perl]
            グループに指定したオプションを使用して実行するには、以下のようなコードを記述する。
          
$dbh = DBI->connect("DBI:mysql:$database"
                . ";mysql_read_default_file=$ENV{HOME}/.my.cnf"
                . ";mysql_read_default_group=perl",
                $user, $password);
            disconnect
          
            disconnect
            メソッドは、データベースからデータベースハンドルを切断する。通常、このメソッドはプログラムを終了する直前に呼び出される。以下に例を示す。
$rc = $dbh->disconnect;
            prepare($statement)
          
            SQL
            ステートメントを、データベースで実行できるようにプリコンパイルし、ステートメントハンドル
            ($sth)
            を返す。ステートメントハンドルを使用して
            execute
            メソッドを呼び出すことができる。
          
            通常、prepare および
            execute を使用して
            SELECT ステートメント(および
            SHOW、DESCRIBE、EXPLAIN
            などの SELECT
            ライクなステートメント)を処理する。以下に例を示す。
          
$sth = $dbh->prepare($statement)
    or die "Can't prepare $statement: $dbh->errstr\n";
            サイズの大きい結果セットをクライアントに読み込む場合、Perl
            に mysql_use_result()
            を使用するように指示できる。
          
my $sth = $dbh->prepare($statement { "mysql_use_result" => 1});
            execute
          
            execute
            メソッドは、プリペアドステートメントを実行する。非
            SELECT
            ステートメントの場合、execute
            は影響を受けたレコードの数を返す。影響を受けたレコードがない場合、execute
            は "0E0" を返す。Perl
            はこの戻り値を 0 として処理するが、true
            とみなす。エラーが発生した場合、execute
            は undef
            を返す。SELECT
            ステートメントの場合、execute
            はデータベースで SQL
            クエリを起動するだけであり、データを取得するには、後述する
            fetch_* メソッドの中の 1
            つを使用する必要がある。以下に例を示す。
$rv = $sth->execute
          or die "can't execute the query: " . $sth->errstr;
            do($statement)
          
            do メソッドは、SQL
            ステートメントをプリコンパイルおよび実行し、影響を受けたレコード数を返す。影響を受けたレコードがない場合、do
            は "0E0" を返す。Perl
            はこの戻り値を 0 として処理するが、true
            とみなす。このメソッドは通常、あらかじめプリコンパイルできない(ドライバの制約により)、または複数回実行する必要がない(挿入、削除など)非
            SELECT
            ステートメントで使用する。以下に例を示す。
$rv = $dbh->do($statement)
        or die "Can't execute $statement: $dbh- >errstr\n";
一般に、'do' ステートメントは、パラメータを使用しないステートメントをプリコンパイルして実行するよりも、非常に高速である(使用することが推奨される)。
            quote($string)
          
            quote
            メソッドは、文字列に含まれる特殊文字を
            "エスケープ"
            して、引用符で囲むために使用する。以下に例を示す。
$sql = $dbh->quote($string)
            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
          
            最後に実行されたコマンドによって影響を受けた(更新された、削除された、など)レコードの数を返す。通常、非
            SELECT execute
            ステートメントの後に使用される。以下に例を示す。
$rv = $sth->rows;
            NULLABLE
          
            カラムに NULL
            値を格納できるかどうかを示す値の配列への参照を返す。各配列要素に格納できる値は、カラムに
            NULL 値を格納できない場合は 0
            または空文字列、格納できる場合は
            1、カラムの NULL
            ステータスが不明な場合は 2
            である。以下に例を示す。
$null_possible = $sth->{NULLABLE};
            NUM_OF_FIELDS
          
            この属性は、SELECT
            ステートメントまたは SHOW
            FIELDS
            ステートメントが返したフィールドの数を示す。これを使用して、結果セットを返すステートメントが実行されたかどうかを調べることができる。値が
            0
            の場合は、INSERT、DELETE、または
            UPDATE などの非
            SELECT
            ステートメントが実行されたことを示す。以下に例を示す。
$nr_of_fields = $sth->{NUM_OF_FIELDS};
            data_sources($driver_name)
          
            このメソッドは、ホスト
            'localhost' 上で動作する MySQL
            サーバに対して使用できるデータベース名を含む配列を返す。以下に例を示す。
@dbs = DBI->data_sources("mysql");
            ChopBlanks
          
            この属性は、fetchrow_*
            メソッドが、返された値の先頭および末尾の空白を切り取るかどうかを決定する。以下に例を示す。
$sth->{'ChopBlanks'} =1;
            trace($trace_level) ,
            trace($trace_level, $trace_filename)
          
            trace
            メソッドはトレースを有効または無効にする。DBI
            クラスメソッドとして呼び出された場合は、すべてのハンドルのトレースを有効または無効にする。データベースまたはステートメントハンドルのメソッドとして呼び出された場合は、指定されたハンドル(およびそのハンドルから今後派生する子)のトレースを有効または無効にする。$trace_level
            を 2
            に設定すると、詳細なトレース情報が出力される。$trace_level
            を 0
            に設定すると、トレースが無効になる。トレース情報は、デフォルトでは標準エラー出力に出力される。$trace_filename
            が指定された場合、そのファイルが追加モードで開かれ、トレースが有効なすべてのハンドルのトレース情報がそのファイルに出力される。以下に例を示す。
DBI->trace(2);                # trace everything
DBI->trace(2,"/tmp/dbi.out"); # trace everything to
                              # /tmp/dbi.out
$dth->trace(2);               # trace this database handle
$sth->trace(2);               # trace this statement handle
            
            
            また、DBI_TRACE
            環境変数を設定することによって
            DBI
            トレースを有効にできる。この変数に数値を設定することは、DBI->(value)
            を呼び出すことと同等である。この変数にパス名を設定することは、DBI->(2,value)
            を呼び出すことと同等である。
          
MySQL 固有のメソッドおよび属性
        ここに示すメソッドは MySQL
        固有であり、DBI
        の標準には含まれません。is_blob、is_key、is_num、is_pri_key、is_not_null、length、max_length、table
        など、その多くは廃止されています。DBI
        標準に代替できるメソッドや属性が存在する場合は、ここに明記します。
      
            mysql_insertid
          
            MySQL の AUTO_INCREMENT
            機能を使用する場合、最新の値がここに格納される。以下に例を示す。
$new_id = $sth->{mysql_insertid};
            古いバージョンの DBI
            インタフェースでは、$sth->{'insertid'}
            を使用できる。
          
            is_blob
          
            ブール値の配列への参照を返す。配列の要素が
            TRUE の場合、対応するカラムが
            BLOB
            型であることを示す。以下に例を示す。
$keys = $sth->{is_blob};
            is_key
          
ブール値の配列への参照を返す。配列の要素が TRUE の場合、対応するカラムがキーであることを示す。以下に例を示す。
$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
            値を格納できることを示す。以下に例を示す。
$not_nulls = $sth->{is_not_null};
            is_not_null
            は廃止されている。DBI 標準の
            NULLABLE
            属性(前述)を使用することが推奨される。
          
            length , max_length
          
            各メソッドは、カラムサイズの配列への参照を返す。length
            の配列は、各カラムの(テーブル定義での宣言に従った)拡大可能な最大サイズを示す。max_length
            の配列は、結果テーブルに実際に存在するデータの最大サイズを示す。以下に例を示す。
          
$lengths = $sth->{length};
$max_lengths = $sth->{max_length};
            NAME
          
カラム名の配列への参照を返す。以下に例を示す。
$names = $sth->{NAME};
            table
          
テーブル名の配列への参照を返す。以下に例を示す。
$tables = $sth->{table};
            type
          
カラムのデータ型の配列への参照を返す。以下に例を示す。
$types = $sth->{type};
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.

