dbase_add_record на локальной машине

  • Автор темы Illusive
  • Дата начала

Illusive

Guest
dbase_add_record на локальной машине

Привет.
Проблема с добавлением записи в базу.
Есть вот такой код
PHP:
$handler=dbase_open("d:\\www\\mh050720.dbf",2);
echo dbase_numrecords ($handler)."</br>";
echo $handler."</br>";
$result=dbase_get_record_with_names($handler,1);
echo"<pre>";
print_r($result);
echo"</pre>";
dbase_add_record($handler,$result);
dbase_close($handler);
Открываем базу, лежащую на локальной машине в папке с запускаемым скриптом. Проверяю число записей в открываемой базе. Считываю первую запись и вывожу ее на экран.
Потом пытаюсь добавить в файл данные из $result.
И ничего не добавляется.
Что не так делается?
 

SaNeK

Новичок
Illusive
С этим расширением не работал, но смотрим в мануале:
bool dbase_add_record ( int dbase_identifier, array record )
Adds the given data to the database.
An indexed array of data. The number of items must be equal to the number of fields in the database, otherwise dbase_add_record() will fail.
array dbase_get_record_with_names ( int dbase_identifier, int record_number )
Gets a record from a dBase database as an associative array.
Как видишь, функция dbase_get_record_with_names() возвращает массив несколько в другом виде, нежели dbase_add_record его принимает. Попробуй вместо dbase_get_record_with_names() воспользоваться dbase_get_record, которая возвращает индексированный массив.

-~{}~ 06.02.06 08:35:

Хотя, повторюсь, с расширением этим я не работал.
 

Illusive

Guest
Автор оригинала: SaNeK
Попробуй вместо dbase_get_record_with_names() воспользоваться dbase_get_record, которая возвращает индексированный массив.
Без разницы, к сожалению. Я обе функции пробовал уже.
 

SaNeK

Новичок
А print_r($result) выводит содержимое?

-~{}~ 06.02.06 08:55:

http://ru.php.net/manual/ru/function.dbase-add-record.php

Пост следующий:
dahlmann at dahlmann dot biz
19-Jul-2005 01:00
$array = dbase_get_record ($handle, $anyrecordno);
$result=dbase_add_record ($handle, $array )

does not work because dbase_get_record adds a field "deleted" to $array. You can check this by using "dump" or "print_r"

Before writing $array into the dbase-table you have to strip the last field.

$array = dbase_get_record ($handle, $anyrecordno);
$array = array_slice ($array, 0, count($array)-1);
$result= dbase_add_record ($handle, $array)
Мораль: удалить последнее поле из рез-та dbase_get_record.
 

Illusive

Guest
(задумчиво чешу макушку) Интересно.. Спасибо! :)
 
Сверху