Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 04-12-2007
hecbuma hecbuma is offline
Registrado
 
Registrado: dic 2007
Posts: 1
Poder: 0
hecbuma Va por buen camino
commit PHP firebird

hola estoy haciendo una aplicacion con firebird".0/interbase y php en un
servidro apache ubuntu... todo funciona bien pero pero a la hora de hacer un
DELETE o un INSERT en alguna tabla no realiza ninguna accion no regresa ningun
error el commit no se realiza.. aqui esta mi codigo y espero que me puedan
ayudar:
Código PHP:
$nom $_GET['nom'];
$ns $_GET['nc'];
$c $_GET['c'];
$gr $_GET['gr'];
/*echo $nom . " " . $ns . " " . $c . " " . $gr;*/
$c=ibase_pconnect("localhost:/usr/bases/PRESTAMOS.FDB",'sysdba','masterkey');
$tr=ibase_trans("IBASE_WRITE",$c);
$sql="UPDATE alumno SET no_cuenta='" ns "', nombre='" nom "', grupo='"
gr "' where no_cuenta like '%" "%';";
$q=ibase_query($tr,$sql);
ibase_commit($tr);
ibase_close($c);
header("Location:alumnos.php"); 

Última edición por jhonny fecha: 04-12-2007 a las 22:56:37. Razón: Etiqueta [PHP]
Responder Con Cita
  #2  
Antiguo 05-12-2007
Mick Mick is offline
Miembro
 
Registrado: may 2003
Posts: 405
Poder: 21
Mick Va por buen camino
Hola,

IBASE_WRITE no debe ir entre comillas, de todas formas siendo un script tan pequeño y como no se esta usando rollback no es necesario iniciar explicitamente ninguna transaccion.

Como usas pconnect (conexion persistente), llamar a ibase_close no es necesario ya que en realidad no hace nada en ese caso.

Y otra cosa importantisima debes validar las entradas y usar parametros en las queries (usando una ? para marcar los parametros), ese script es un peligro, cualquiera podria borrar los numeros de cuenta de todos los alumnos dejando en blanco el campo c del formulario y aunque comprobases que no quede en blanco bastaria escribir algo de este estilo ' OR 1=1 OR ''=' .

Otra cosa, como haces una redireccion a otra pagina, nunca te apareceran errores que pudiese dar ese script en pantalla.

El codigo quedaria asi:

Código PHP:
$nom $_GET['nom'];
$ns    $_GET['nc'];
$c     $_GET['c'];
$gr    $_GET['gr'];

// Aqui asegurarse de que los parametros tengan valores validos.

$c=ibase_pconnect("localhost:/usr/bases/PRESTAMOS.FDB",'sysdba','masterkey');
$sql="UPDATE alumno SET no_cuenta=?, nombre=?, grupo=? WHERE no_cuenta CONTAINING ?";
$rsibase_query($c,$sql,$ns$nom$gr$c);

if(
$rs!==FALSE) {
 
header("Location:alumnos.php");  
} else {
 
// Ha habido algun error, hacer lo que sea necesario en ese caso.

Saludos

Última edición por Mick fecha: 05-12-2007 a las 11:42:25.
Responder Con Cita
  #3  
Antiguo 05-12-2007
jgutti jgutti is offline
Miembro
 
Registrado: may 2003
Posts: 189
Poder: 21
jgutti Va por buen camino
al guardar registro, se corrompe la base

Hola al foro, utilizo firebird + php, al insertar o actulizar registros estos se graban correctamente en la base de datos pero esta se corrompte, el script es el sgte:

$db=ibase_connect("localhost:/data/e_comer.gdb","user","pas");
if (!$db) die ("error connecting to database");
$tr=ibase_trans($db,IBASE_COMMITTED,IBASE_REC_VERSION,IBASE_NOWAIT);
$sql ="INSERT INTO pagos_web(EMPRESA,FACTURA,FECHA,monto)
values($emps,$fact,],'".formato_guarda_fecha($f_emi)."',$monto)";
$result = ibase_query($_SESSION['tr'],$sql);
if (!$result) database_error ("Error al Ingresar el Pago", $_SESSION['tr']);
ibase_commit_ret($_SESSION['tr']);
- ¿que estoy haciendo mal para que se producto este problema?

saludos

jgutti
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
ADO, problema con commit Gaim2205 Conexión con bases de datos 2 23-10-2007 20:01:29
Commit micayael PHP 4 21-09-2005 19:34:50
commit dentro de un procedure de firebird cahosoft Firebird e Interbase 2 10-09-2005 04:02:03
Commit Loviedo Firebird e Interbase 7 29-07-2005 14:36:10
como sincronizo el Commit de mi api con un trigger en Firebird cesar_picazo Conexión con bases de datos 1 11-10-2004 18:31:31


La franja horaria es GMT +2. Ahora son las 16:10:32.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi