PHP  
downloads | documentation | faq | getting help | | php.net sites | links 
search for in the  
previousdbase_replace_recorddblistnext
Last updated: Tue, 11 Jun 2002
view this page in Printer friendly version | English | Brazilian Portuguese | Czech | Dutch | Finnish | German | Hungarian | Italian | Japanese | Korean | Polish | Romanian | Russian | Spanish | Turkish

XX. DBM

Ces fonctions vous permettent d'�crire des lignes dans une base de donn�es de type dbm. Ce type de base (support� par Berkeley db, gdbm, et quelques librairies syst�mes, ou certaines librairies du syst�me d'exploitation) enregistre les paires cl�s/valeurs, (contrairement aux enregistrements par ligne, utilis� par les autres bases de donn�es relationnelles).

Exemple 1. Pr�sentation de dbm

<?php
  $dbm = dbmopen("dernier", "w");
  if (dbmexists($dbm, $userid)) {
    $last_seen = dbmfetch($dbm, $userid);
  } else {
    dbminsert($dbm, $userid, time());
  }
  faire_quelquechose();
  dbmreplace($dbm, $userid, time());
  dbmclose($dbm);
?>

Table des mati�res
dblist -- D�crit la librairie dbm utilis�e.
dbmclose -- Ferme une base de donn�es dbm.
dbmdelete -- Efface une valeur.
dbmexists -- Indique si une valeur existe.
dbmfetch -- Lit une valeur.
dbmfirstkey -- Lit la premi�re cl�.
dbminsert -- Ins�re une valeur.
dbmnextkey -- Lit la cl� suivante.
dbmopen -- Ouvre une base de donn�es dbm
dbmreplace -- Remplace une valeur.
User Contributed Notes
DBM
add a note about notes

25-Apr-2000 09:00

You may need to add (or uncomment) the line
"extension=php3_dbm.dll" line in php3.ini in your Windows
directory.


12-Aug-2000 04:51

actually you only need to put in that line if you want it globally included
in all scripts, otherwise you can just put: use(dbm.o); in your script.


15-Feb-2001 02:48

just add the php_db.dll extension and it works


07-Jul-2001 12: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.


05-Oct-2001 04:27

Hi *,
names of these functions was changed in PHP4.
Refer to 

or 
.
Regards Jindra


28-Feb-2002 04: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);

add a note about notes
previousdbase_replace_recorddblistnext
Last updated: Tue, 11 Jun 2002
show source | credits | stats | mirror sites:  
Copyright © 2001, 2002 The PHP Group
All rights reserved.
This mirror generously provided by:
Last updated: Sun Jul 7 16:31:42 2002 CEST