![]() |
ibase_query() [function.ibase-query]: Dynamic SQL Error SQL error code = -104 Token
Buenos dias, muy comedidamente solicito su colaboración para tratar de dar solución a este problema, la verdad es que llevo más de una semana tratando de dar solución, he consultado varias paginas y foros, pero nada que doy con la solución.
El caso es el siguiente: Deseo pasar una información de una tabla en DBF a otra tabla en FIREBIRD, pero no permite hacer la respectiva grabación de los datos. Se pueden visualizar desde la tabla DBF pero no permite la grabación en la tabla FIREBIRD. Uso: S.O. Windows 7, Appserver 2.5, Firebird 2.5 Código PHP:
Código PHP:
Agradezco la colaboración u orientación que me puedan brindar |
Te está diciendo "Token unknown - line 1, column 78".
Esto quiere decir que no entiende algún comando del SQL que generas. Revisa que por ejemplo los nombres no tengan un apóstrofe o comillas. Esto rompería la sentencia SQL. Por ejemplo, imagina que insertas : La casa de "Don Juan" Luego el SQL quedaría Esto se interpretaría como
|
También he visto que en el código en la columna 78 tienes un error en el código.
La variable $cod _usu está separada y supongo que PHP la interpreta como "string vacío" Código:
$Comando = 'insert into cuentas (codigo,nombre,cedula,direccion,perifact,barrio) values ('."$cod _usu".','."$nom_usu".','."$ced_usu".','."$dir_usu".','."$per_fac".','."$bar_usu".');'; |
duilioisola, gracias por su respuesta
Con respecto a sus observaciones me permito indicarle que el espacio debio haberse creado cuando hice la copia, en el codigo original no lo tengo. Ante su observacion revise un codigo que si esta funcionando e hice un ajuste al la linea de insercion dejandola asi: Código PHP:
Código PHP:
Código PHP:
Que puede ser? |
Te sugiero en estos casos hacer un log de cada sentencia SQL que se ejecuta.
Veo que ya presentas los diferentes datos que se insertarán, pero no sabes exactamente que es lo que se envia a Firebird. En este caso, parece que en algún lugar en el que se espera un entero se le entrega un string vacío. Esto no sabe como convertirlo, dado que no es un número. Dicho esto, no es necesario entrecomillar los valores numéricos. Código PHP:
|
duilioisola, gracias por su colaboración
Le comento que ya elimine las comillas de los campos numericos y no ha sido posible que los datos se graben en la base de datos de Firebird. Usted me sugiere hacer un LOG para las transacciones SQL, pero honestamente no se como se hace, me podria orientar o indicar donde encuentro la información al respecto, ya que hice varias consultas pero solo encontre una para el manejo de Procedures Stored y los triggers. Mil gracias |
Con "Log" me refería solamente a agregar
Código PHP:
De esta manera podrás ver exactamente que es lo que se envía a Firebird. Luego habrá que ver porqué la sentencia da error y corregir la formación de ese "$Comando". |
duilioisola,
le cuento que definitivamente usando la variable $Comando para pasar como parametro a query no me funciono por ningun lado, con el log me mostraba Código:
>>>>> PROCESO DE BORRADO TERMINADO Código:
$nResultado = ibase_query($Transaccion, "insert into cuentas (codigo,nombre,cedula,direccion,perifact,barrio)" . |
Si te fijas en la sentencia SQL verás claramente el error:
Es lo que comentaba en uno de los mensajes anteriores. Deberías quitar las comillas a los valores que sean enteros y en el caso de que alguno de los valores enteros sea nulo forzar un 0 o NULL. |
La franja horaria es GMT +2. Ahora son las 13:31:14. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi