(PECL paradox >= 1.4.0)
px_insert_record — Inserta registro en base de datos paradox
$pxdoc
, array $data
)Inserta un nuevo registro en la base de datos. El registro no será necesariamente insertado al final de la base de datos, puede ser insertado en cualquier posición dependiendo en donde se encuentre la primera ranura libre.
Los datos del registro se pasan como una matriz de valores de campo. Los elementos en la matriz debe corresponder a los campos de la base de datos. Si la matriz tiene menos elementos que los campos en la base de datos, los campos restantes se establecerán a null.
La mayoría de los valores de campo se puede pasar como su tipo php equivalente, por ejemplo, un valor long se utiliza para campos de tipo PX_FIELD_LONG, PX_FIELD_SHORT y PX_FIELD_AUTOINC, un valor double se utiliza para campos de tipo PX_FIELD_CURRENCY y PX_FIELD_NUMBER. Los valores de campo para los campos blob y alfa se pasan como cadenas.
Los campos de tipo PX_FIELD_TIME y PX_FIELD_DATE requieren ambos un valor long. En el primer caso este es el número de milisegundos desde la medianoche. En el segundo caso es el número de días desde el 1.1.0000. A continuación hay dos ejemplos para convertir la fecha actual o marca de tiempo en un valor adecuado para unos campos de fecha/hora en paradox.
Nota:
Esta función sólo está disponible si se utiliza pxlib >= 0.6.0.
pxdoc
Identificador de recursos de la base de datos paradox devuelto por la función px_new().
data
Matriz asociado o indexada que contiene los valores de campo como, por ejemplo, devuelto por la función px_retrieve_record().
Devuelve FALSE
en caso de fallo o el número de registro en caso de éxito.
Ejemplo #1 Establece los campos fecha/hora en una base de datos paradox a la fecha/hora actual
<?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);
?>
El resultado del ejemplo sería:
2/21/2006 21:42:30 2/21/2006 2/21/2006 20:42:30 2/21/2006
La cuenta de la fecha juliana pasada a la función jdtogregorian() tiene una base diferente de 1.1.4714 a. C. y por lo tanto debe calcularse añadiendo 1721425 a la cuenta de días utilizados en el archivo paradox. En cuanto el número de días en una fecha y hora se hace fácilmente multiplicando por 86400000.0 para obtener milisegundos.
px_update_record() - Actualizar el registro en la base de datos paradox