Pregunta
Como tratar los campos BLOB de Interbase desde PHP
Responder esta pregunta por jc el 2009-01-28
Necesito mostrar en pantalla el contenido de un campo BLOB (en mi caso, es texto lo que almaceno en él), pero no encuentro la forma de hacerlo. Agradecería si alguien me diera alguna luz al respecto.
Salu2 a todos.
Salu2 a todos.
Respuestas
Bien, investigando un poco en varias versiones de ayuda del PHP, finalmente he encontrado como lidiar con esto, al menos en mis versiones de PHP e Interbase (Interbase 7 y PHP 5.2.6)
Supongamos que tengo el campo BLOB_FIELD en la tabla TABLE.
En una variable, digamos $lines, la cual es de tipo array, tengo las lineas que quiero poner dentro del campo. Con el siguiente codigo logro escribir $lines dentro del BLOB_FIELD.
Con un codigo equivalente al anterior es posible actualizar un campo de tipo BLOB, que almecene Texto.
Ahora bien, para extraer el contenido del campo y mostrarlo, el codigo sería como:
Y en la variable $lines quedará almacenado el texto guardado en BLOB_FIELD, y será posible mostrarlo con un simple echo nl2br($lines)
Salu2 a todos nuevamente.
Supongamos que tengo el campo BLOB_FIELD en la tabla TABLE.
En una variable, digamos $lines, la cual es de tipo array, tengo las lineas que quiero poner dentro del campo. Con el siguiente codigo logro escribir $lines dentro del BLOB_FIELD.
...
$link = ibase_connect($host, $user, $pass);
$blob = ibase_blob_create($link);
for ($i=0; $i<=count($lines)-1; $i++)
{
ibase_blob_add($blob, $lines[$i]);
}
$blob_content = ibase_blob_close($blob);
$Stmt = "update TABLE set BLOB_FIELD = ? where ID = $ID";
ibase_query($link, $Stmt, $blob_content);
...
Con un codigo equivalente al anterior es posible actualizar un campo de tipo BLOB, que almecene Texto.
Ahora bien, para extraer el contenido del campo y mostrarlo, el codigo sería como:
$link = ibase_connect($host, $user, $pass);
$query = ibase_query($link, "select BLOB_FIELD from TABLE where ID = $ID");
$row = ibase_fetch_object($query);
$blob_content = ibase_blob_info($row->BLOB_FIELD);
$blob_handler = ibase_blob_open($row->BLOB_FIELD);
$lines = ibase_blob_get($blob_handler, $blob_content[0]);
ibase_blob_close($blob_handler);
...
Y en la variable $lines quedará almacenado el texto guardado en BLOB_FIELD, y será posible mostrarlo con un simple echo nl2br($lines)
Salu2 a todos nuevamente.
por jc el 2009-01-28



