PDA

Ver la Versión Completa : mysql_affected_rows() para firebird


jgutti
07-07-2006, 20:45:21
Hola al foro, trabajo con php y firebird, que instruccion para firebird es similar a mysql_affected_rows() de mysql

Atte

jgutti

dec
08-07-2006, 02:23:28
Hola,

Supongo que no usas PHP5, puesto que ya existe en PHP5 la función ibase_affected_row (http://es2.php.net/manual/es/function.ibase-affected-rows.php). En PHP4... por más que he tratado de buscar en Google (http://www.google.es) dándole vueltas al asunto, incluso pensando en otra manera de conseguir el mismo resultado sin utilizar la función de marras... chico, que me ha sido imposible conseguir nada.

Sin embargo... echando un vistazo a la clase DB Pear (http://pear.php.net/package/DB), más concretamente a la clase que se encarga de trabajar con FireBird e Interbase, me encuentro con esto justo en el método que lleva a cabo la consulta SQL a la base de datos:


function simpleQuery($query)
{
$ismanip = DB::isManip($query);
$this->last_query = $query;
$query = $this->modifyQuery($query);
$result = @ibase_query($this->connection, $query);

if (!$result) {
return $this->ibaseRaiseError();
}
if ($this->autocommit && $ismanip) {
@ibase_commit($this->connection);
}
if ($ismanip) {
$this->affected = $result;
return DB_OK;
} else {
$this->affected = 0;
return $result;
}
}


O sea, que parece ser que las "filas afectadas" se toman, directamente, del resultado de la función "ibase_query". Por otro lado, este es el método "affectedRow" conque cuenta dicha clase, a ver si te da alguna idea:


function affectedRows()
{
if (is_integer($this->affected)) {
return $this->affected;
}
return $this->ibaseRaiseError(DB_ERROR_NOT_CAPABLE);
}


Yo no he podido probarlo, porque no dispongo de FireBird ni de la experiencia suficiente como para montar un escenario de pruebas rápidamente, como podría hacerlo con MySQL. Pruébalo tú si eso y nos cuentas cómo te fue. ;)