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);
Funciones DBM Functions [obsoletas]
Introducción
Estas funciones le permiten almacenar registros almacenados en una base de datos estilo-dbm. Este tipo de base de datos (soportado por la BD de Berkeley, » GDBM, y algunas bibliotecas de sistema, asi como en la forma de una biblioteca incorporada de archivos planos) almacena parejas clave/valor (a diferencia de los registros completos soportados por las bases de datos relacionales).
Note: El soporte de DBM se considera obsoleto y es recomendable que use las funciones de la capa de abstracción de bases de datos (estilo-dbm) en su lugar.
Note: Esta extensión ha sido eliminada de PHP, y no se encuentra disponible a partir de PHP 5.0.0.
Requisitos
Para usar estas funciones es necesario compilar PHP con soporte para una base de datos base. Consulte la lista de bases de datos soportadas.
Instalación
Para poder usar estas funciones, se debe compilar PHP con soporte dbm, empleando la opción --with-db en la compilación. Adem´s, se debe contar con el soporte de una base de datos o se deben usar algunas librerías del sistema.
Configuración en tiempo de ejecución
Esta extensión no tiene directivas de configuración en php.ini.
Tipos de recursos
La función dbmopen() devuelve un identificador de base de datos que es usado por las demás funciones dbm.
Constantes predefinidas
Esta extensión no tiene ninguna constante definida.
Ejemplos
Example#1 Ejemplo de DBM
<?php
$dbm = dbmopen("lastseen", "w");
if (dbmexists($dbm, $id_usuario)) {
$last_seen = dbmfetch($dbm, $id_usuario);
} else {
dbminsert($dbm, $id_usuario, time());
}
hacer_algo();
dbmreplace($dbm, $id_usuario, time());
dbmclose($dbm);
?>
Table of Contents
- dblist — Describe la biblioteca compatible con DBM usada
- dbmclose — Cierra una base de datos dbm
- dbmdelete — Elimina el valor para una clave desde una base de datos DBM
- dbmexists — Indica si un valor existe para una clave en una base de datos DBM
- dbmfetch — Recupera un valor para la clave dada desde una base de datos DBM
- dbmfirstkey — Recupera la primera clave desde una base de datos DBM
- dbminsert — Inserta un valor para una clave en la base de datos DBM
- dbmnextkey — Descripción
- dbmopen — Abre una base de datos DBM
- dbmreplace — Reemplaza el valor para una clave en una base de datos DBM
DBM
28-Feb-2002 06:16
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 http://www.faqts.com/knowledge_base/view.phtml/aid/1988
or http://www.zend.com/manual/ref.dba.php .
Regards Jindra
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.
