px_insert_record

(PECL paradox >= 1.4.0)

px_insert_recordВставить запись в базу данных paradox

Описание

px_insert_record ( resource $pxdoc , array $data ) : int

Вставляет новую запись в базу данных. Запись не обязательно вставляется в конец базы данных, но может быть вставлена в любую позицию в зависимости от того, где находится первый свободный слот.

Данные записи передаются в виде массива значений полей. Элементы массива должны соответствовать полям в базе данных. Если массив содержит меньше элементов, чем в базе данных, остальные поля будут иметь значение null.

Большинство значений полей может быть передано как эквивалент типа в PHP, например, большое целое значение используется для полей типа PX_FIELD_LONG, PX_FIELD_SHORT и PX_FIELD_AUTOINC, значения с числами с плавающей точкой используется для полей типа PX_FIELD_CURRENCY и PX_FIELD_NUMBER. Значения полей для полей blob и альфа передаются в виде строк.

Поля типа PX_FIELD_TIME и PX_FIELD_DATE требуют большого значения. В первом случае это количество миллисекунд с полуночи. Во втором случае это количество дней с момента 1.1.0000. Ниже приведены два примера преобразования текущей даты или отметки времени в значение, подходящее для одного из полей даты/времени paradox.

Замечание:

Данная функция доступна только в том случае, если используется библиотека pxlib >= 0.6.0.

Список параметров

pxdoc

Идентификатор ресурса базы данных paradox, возвращаемый функцией px_new().

data

Ассоциативный или индексированный массив, содержащий значения полей, например, возвращенные функцией px_retrieve_record().

Возвращаемые значения

Возвращает FALSE в случае ошибки или номер записи в случае успешного выполнения.

Примеры

Пример #1 Установка значений даты/времени в базе данных paradox на текущие дату и время

<?php
$px 
px_new();
$fp fopen("test.db""w+");
px_create_fp($px$fp, array(array("timestamp""@"), array("time""T"), array("date""D")));

$curdate getdate();
$jd gregoriantojd($curdate["mon"], $curdate["mday"], $curdate["year"]);
$days $jd 1721425/* Number of days between 1.1.4714 b.c. and 1.1.0000 */
$secs $curdate["hours"]*3600 $curdate["minutes"]*60 $curdate["seconds"];
px_insert_record($px, array($days*86400000.0 $secs*1000.0$secs*1000.0$days));

$curtimestamp microtime(true);
$days = (int) ($curtimestamp/86400);
$secs $curtimestamp - ($days 86400.0);
$days += 2440588/* Number of days between 1.1.4714 b.c. and 1.1.1970 */
$days -= 1721425/* Number of days between 1.1.4714 b.c. and 1.1.0000 */
px_insert_record($px, array($days*86400000.0 $secs*1000.0$secs*1000.0$days));
for(
$i=0$i<2$i++) {
    
$rec px_retrieve_record($px$i);
    echo 
px_timestamp2string($px$rec["timestamp"], "n/d/Y H:i:s")."\n";
    echo 
px_date2string($px$rec["date"], "n/d/Y")."\n";
}
px_close($px);
px_delete($px);
?>

Результат выполнения данного примера:

2/21/2006 21:42:30
2/21/2006
2/21/2006 20:42:30
2/21/2006

Юлианский день, переданный в jdtogregorian(), имеет другую базу 1.1.4714, и поэтому должны быть рассчитаны путем добавления 1721425 к количеству дней, используемых в файле paradox. Превращая день в отметку времени - это легко сделать путем умножения на 86400000.0 для получения миллисекунд.

Смотрите также

px_update_record() - Обновляет запись в базе данных paradox