PHP: DBM関数 - Manual
PHP  
downloads | documentation | faq | getting help | mailing lists | | php.net sites | links | my php.net 
search for in the  
<dbase_replace_recorddblist>
view the version of this page
Last updated: Tue, 21 Dec 2004

XXI. DBM関数

導入

これらの関数により、レコードを dbm 形式 のデータベースに格納 できるようになります。この形式のデータベース(組み込みのフラット ファイル・ライブラリと同様に、Berkeley DB, 、その他のシステム・ライブラリにより サポートされています)は、(リレーショナル・データベースによりサポー トされる事細かなレコード形式ではなく、)キーと値の組み合わせを格納 します。

注意: しかし、dbmサポートは古くなっており、 (dbm形式の)データベース抽象化レイヤ関数 を代わりに使用することが推奨されています。

要件

この関数を使用するには、使用するデータベースのサポートを指定して PHPをコンパイルする必要があります。サポートされるデータベースの リストを参照して下さい。

インストール手順

以下の関数を使用するには、--with-dbオプションを指定してdbmサポートを 有効にしてPHPをコンパイルする必要があります。 さらに、使用するデータベースのサポー トを確認する必要があります。また、いくつかのシステムライブラ リを使用することが可能です。

実行用の設定

この拡張モジュールは設定ディレクティブを全く定義しません。

リソース型

関数dbmopen()は、データベースIDを返します。こ のIDは、他のdbm関数で使用されます。

定義済みの定数

この拡張モジュールは定数を全く定義しません。

例 1. DBMの例

$dbm = dbmopen ("lastseen", "w");
if (dbmexists ($dbm, $userid)) {
  $last_seen = dbmfetch ($dbm, $userid);
} else {
  dbminsert ($dbm, $userid, time());
}
do_stuff();
dbmreplace ($dbm, $userid, time());
dbmclose ($dbm);

目次
dblist -- 使用されているDBM互換ライブラリの一覧を返す
dbmclose -- dbm データベースを閉じます
dbmdelete -- dbm データベースから値を削除します
dbmexists -- dbm データベースにキー検索を行います
dbmfetch --  dbm データベースからキーの値を取り出します
dbmfirstkey -- dbm データベースから最初のキーを取り出します
dbminsert -- dbm データベースへの値の挿入
dbmnextkey -- dbm データベースから次のキーを取り出します
dbmopen -- DBMデータベースをオープンします
dbmreplace -- dbm データベース中の値を置き換えます


add a note add a note User Contributed Notes
DBM関数
foripepe at yahoo dot com
28-Feb-2002 06:16
First:
Make a firstdbm.db file.
Set attribute Read and Write.

--------------------------------------

<html><body>

<?
$dbm
= dbmopen("firstdbm","w");
echo
"<b>\$dbm: $dbm = dbmopen(\"firstdbm\", \"w\");</b>< br>";
echo
"<i>".dblist()." = dblist();</i>< br>< br>";

$fruit = "apple";
$colour = "red";
if (
dbmexists ($dbm, $fruit)) {
 
$colour = dbmfetch ($dbm, $fruit);
  echo
"\$colour: $colour = dbmfetch(\$dbm: $dbm, \$fruit: $fruit);< br>";
 
$key = dbmreplace($dbm, $fruit, "green");
  echo
"\$key: $key = dbmreplace(\$dbm: $dbm, \$fruit: $fruit, \"green\");< br>";
 
$colour = dbmfetch ($dbm, $fruit);
  echo
"\$colour: $colour = dbmfetch(\$dbm: $dbm, \$fruit: $fruit);< br>";
  if ( !
dbmdelete($dbm, $fruit) ) {
   echo
"False (OK) = dbmdelete(\$dbm: $dbm, \$fruit: $fruit);< br>";
  } else {
   echo
"True (NOT OK) = dbmdelete(\$dbm: $dbm, \$fruit: $fruit);< br>";
  }
 
$colour = dbmfetch ($dbm, $fruit);
  echo
"\$color: $colour = dbmfetch(\$dbm: $dbm, \$fruit: $fruit);< br><hr>";
 
$i = 1;
 
$key = dbmfirstkey($dbm);
  while (
$key) {
   if (
$i==1) {
     echo
"\$key: $key = dbmfirstkey(\$dbm: $dbm);< br>";
   } else {
     echo
"\$key: $key = dbmnextkey(\$dbm: $dbm);< br>";
   }
  
$i++;
  
$colour = dbmfetch ($dbm, $key);
   echo
"\$colour: $colour = dbmfetch(\$dbm: $dbm, \$key: $key);< br>";
  
$key = dbmnextkey($dbm,$key);
  }
} else {
 
dbminsert ($dbm, $fruit, $colour);
  echo
"dbminsert(\$dbm: $dbm, \$fruit: $fruit, \$colour: $colour);< br>";
 
dbminsert ($dbm, "pear", "yellow");
  echo
"dbminsert(\$dbm: $dbm, \"pear\", \"yellow\");< br>";
 
dbminsert ($dbm, "apricot", "pink");
  echo
"dbminsert(\$dbm: $dbm, \"apricot\", \"pink\");< br><hr>";
 
$i = 1;
 
$key = dbmfirstkey($dbm);
  while (
$key) {
   if (
$i==1) {
     echo
"\$key: $key = dbmfirstkey(\$dbm: $dbm);< br>";
   } else {
     echo
"\$key: $key = dbmnextkey(\$dbm: $dbm);< br>";
   }
  
$i++;
  
$colour = dbmfetch ($dbm, $key);
   echo
"\$colour: $colour = dbmfetch(\$dbm: $dbm, \$key: $key);< br>";
  
$key = dbmnextkey($dbm,$key);
  }
}

echo
"< br>";
if (
dbmclose ($dbm)) {
  echo
"<b>True (OK) = dbmclose(\$dbm: $dbm);</b>< br>";
} else {
  echo
"<b>False (NOT OK) = dbmclose(\$dbm: $dbm);</b>< br>";
};
?>

</body></html>

--------------------------------------
The first run output:

$dbm: 1 = dbmopen("firstdbm", "w");
ndbm support enabled = dblist();

dbminsert($dbm: 1, $fruit: apple, $colour: red);
dbminsert($dbm: 1, "pear", "yellow");
dbminsert($dbm: 1, "apricot", "pink");

$key: pear = dbmfirstkey($dbm: 1);
$colour: yellow = dbmfetch($dbm: 1, $key: pear);
$key: apricot = dbmnextkey($dbm: 1);
$colour: pink = dbmfetch($dbm: 1, $key: apricot);
$key: apple = dbmnextkey($dbm: 1);
$colour: red = dbmfetch($dbm: 1, $key: apple);

True (OK) = dbmclose($dbm: 1);

--------------------------------------
The second run output:

$dbm: 1 = dbmopen("firstdbm", "w");
ndbm support enabled = dblist();

$colour: red = dbmfetch($dbm: 1, $fruit: apple);
$key: 0 = dbmreplace($dbm: 1, $fruit: apple, "green");
$colour: green = dbmfetch($dbm: 1, $fruit: apple);
False (OK) = dbmdelete($dbm: 1, $fruit: apple);
$color: = dbmfetch($dbm: 1, $fruit: apple);

$key: pear = dbmfirstkey($dbm: 1);
$colour: yellow = dbmfetch($dbm: 1, $key: pear);
$key: apricot = dbmnextkey($dbm: 1);
$colour: pink = dbmfetch($dbm: 1, $key: apricot);

True (OK) = dbmclose($dbm: 1);
jb at abzone dot cz
05-Oct-2001 05:27
NOTE: DBM and DBA are two different extensions which must
     be configured separately.

Hi *,
names of these functions was changed in PHP4.
Refer to
or .
Regards Jindra
mouse at bloodletting dot com
07-Jul-2001 01:23
Be advised that almost every function in this section either has no documentation or incorrectly documented regarding return codes.  If you want to use the DB methods safely you will have to reverse engineer the return codes and hope that they do not change values returned by the functions in the future to match the incorrect documentation.

In my experience, the return code of 0 or FALSE indicates no error.  This matches the behavior of GDBM which I am using as my underlying DB manager.  This may not be true for people using another manager, or the builtin flatfile code.

<dbase_replace_recorddblist>
 Last updated: Tue, 21 Dec 2004
show source | credits | sitemap | contact | advertising | mirror sites 
Copyright © 2001-2005 The PHP Group
All rights reserved.
This unofficial mirror is operated at: /
Last updated: Mon Mar 14 08:13:06 2005 Local time zone must be set--see zic manual page