Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: БД типа DBM
 
 автор: Pitbuly   (22.07.2005 в 08:26)   письмо автору
 
 

помогите разобраться с DBM.
Функция dba_open(str filename,str mode,str type)
Зачем нужен type и как его применять?
dba_handlers() (возвращает перечень поддерживаемых баз данных)
возвращает следующее:
cdb
cdb_make
db3
inifile
flatfile
пишу dba_open(file.dat,'c',cdb) сообщает:
Driver initialization failed for handler: cdb: Update operations are not supported.
как это не not supported.? когда пишу без type всё идет но как то не правильно,
то что первоначально записал то
и выводит а допустим dba_replace в файл записывает, а выводит
старую запись.
код следующий:



$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 одинаковыми
ключами.В чем тут проблемма?

   
 
 автор: cheops   (22.07.2005 в 12:24)   письмо автору
 
   для: Pitbuly   (22.07.2005 в 08:26)
 

>пишу dba_open(file.dat,'c',cdb) сообщает:
Параметр type строковый, поэтому следует писать так
<?php
  dba_open
('file.dat','c','cdb');
?>

   
 
 автор: cheops   (22.07.2005 в 12:27)   письмо автору
 
   для: Pitbuly   (22.07.2005 в 08:26)
 

Добавлю ссылки на тему, посвящённую плоским файлам и возможным проблемам с ними, а также на альтернативные движки
http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=5081
http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=549

   
 
 автор: Pitbuly   (23.07.2005 в 18:13)   письмо автору
 
   для: cheops   (22.07.2005 в 12:27)
 

спасибо я уже понял.
скрипт выдаёт ошибку:
Driver initialization failed for handler: cdb: Update operations are not supported.
хотя phpinfo() говорит что cdb поддерживается.
Я сделал вывод что сам обработчик есть ,но он почему то не работает.
Я поставил не cdb a infile и всё заработало.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования