(PECL paradox >= 1.4.0)
px_insert_record — Вставить запись в базу данных paradox
$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; /* Количество дней между 1.1.4714 г. до н.э. и 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; /* Количество дней между 1.1.4714 г. до н.э. и 1.1.1970 */
$days -= 1721425; /* Количество дней между 1.1.4714 г. до н.э. и 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