БД типа DBM

pitbuly

Новичок
БД типа DBM

Кто нибудь работал с БД типа DBM?
она у меня вообще не открывается.
код у меня следующий.
PHP:
if(($db=dba_popen('inv.dat','c','cdb'))===FALSE)
{
	print('Could not open database!');
	exit();
}else
{
$ins=dba_insert('4','500',$db);
//
if($ins)
	{
	print('Inserted inventory for item 4');
	}
}
выдаёт ошибку:
Warning: dba_popen(inv.dat,c) [function.dba-popen]: Driver initialization failed for handler: cdb: Update operations are not supported in C:\www\html\op_declar.php on line 8
В php.ini библиотеку extension=php_dba.dll
раскоментировал. функция
dba_handlers() (возвращает перечень поддерживаемых баз данных)
возвращает следующее:
cdb
cdb_make
db3
inifile
flatfile
у меня php5 & apache 2.0
 

pitbuly

Новичок
ошибка не в dba_insert,a в dba_open она возвращает FALSE
почему не поддерживается cdb?
Я тут почитал мануал php3.Там есть пример открытия DBM
там тип вообще не пишется ,и когда я убрал тип .
все пошло.но как то странно,то что первоначально записал то
и выводит а допустим dba_replace в файл записывает, а выводит
старую запись.
код следующий:
PHP:
$dbm = dba_popen("lastseen.dat", "c");
if (dba_exists('3', $dbm)) {
   dba_replace('3','ruslan',$dbm);
   print("Replaced inventory for item 3<br>");
}
else
{
	dba_insert('3','150',$dbm);
	print("Inserted inventory for item 3<br>");
}
if(dba_exists('4',$dbm))
{
	dba_delete('4',$dbm);
	print("Removed item 4<br>");
}
else
{
	dba_insert('4','500',$dbm);
	print("Inserted inventory for item 4<br>");
}
dba_sync($dbm);
for($key=dba_firstkey($dbm); $key !== FALSE; $key=dba_nextkey($dbm))
{
	print("$key -->".dba_fetch($key,$dbm)."<br>");
}
dba_close($dbm);
т.е в первый раз должно выйти
Inserted inventory for item 3
Inserted inventory for item 4
3 --> 150
4 --> 500
а во второй
Replaced inventory for item 3
Removed item 4
3 --> ruslan
а оно постоянно выводит
3 --> 150
4 --> 500
Хотя в самом файле добаляются новые записи c одинаковыми
ключами.В чем тут проблемма?
 
Сверху