Foros del Web » Programando para Internet » PHP »

Error de consulta insert

Estas en el tema de Error de consulta insert en el foro de PHP en Foros del Web. Buenas a todos. Tengo un problemilla que después de 4 días dando patadas ya no sé por donde meterle mano. Trabajo sobre php y contra ...
  #1 (permalink)  
Antiguo 30/04/2015, 04:23
Avatar de SirZoX  
Fecha de Ingreso: mayo-2006
Ubicación: Valencia
Mensajes: 124
Antigüedad: 18 años
Puntos: 2
Error de consulta insert

Buenas a todos.

Tengo un problemilla que después de 4 días dando patadas ya no sé por donde meterle mano.

Trabajo sobre php y contra una base de datos sql server alojada en un servidor externo al que ejecuta php.
La conexión se realiza correctamente, y los select para extraer info funcionan sin problema.
Pero a la hora de hacer un insert, siempre siempre me da un error de conversión de tipos de datos.
Como ya me mosqueé bastante, le pedí al db admin que me pasara una consulta de un insert simple, para ver el formato de fecha más que nada, y yo copio y pego esa misma consulta en el sql server manager, la ejecuta y funciona maravillosamente.

Voy al código php, ejecuto la misma consulta, tal cual, copiada y pegada, y me sigue saliendo el mismo error.

Deduzco que entonces el problema viene por parte de php, que algo me faltará hacer para poder lanzar un insert, porque si no ... ya no sé qué más puedo hacer.

La consulta en cuestión es la siguiente.
Código SQL:
Ver original
  1. INSERT INTO ExternoMVD.Cliente (
  2.   FechaActualizacion,  ClaveEmpresa,  CodigoCliente,  Nombre,  Apellidos,  Email,  CIF,   ClaveExternaCliente ,  IdentificadorCliente  )
  3.  VALUES ( '16/04/2015 10:05:36', 'EMPRESA01', 'CLIENTE03','NOMBRE CLIENTE 03', 'APELLIDOS CLIENTE 03', '[email protected]', '101010101Y', 'Clave02', 1 )

Como ya he visto que no se permite código de programación en este foro (perdón), simplemente indicar que la consulta se lanza con la funcion mssql_query de php.

Finalmente, el error que muestra la página al ejecutarse es el siguiente.
Cita:
Error insert_customer: The statement has been terminated.
A ver si alguien puede ayudarme con esto, porque 4 días perdidos son demasiados :(

Última edición por SirZoX; 30/04/2015 a las 06:00
  #2 (permalink)  
Antiguo 30/04/2015, 08:26
 
Fecha de Ingreso: julio-2012
Ubicación: Israel
Mensajes: 360
Antigüedad: 11 años, 9 meses
Puntos: 40
Respuesta: Error de consulta insert

Me parece que el mensaje de error es en el nivel del PHP (¿que es insert_customer?), y no es de SQL Server.
Yo intenaría a pasar la fecha en esta manera: '20150416 10:05:36'.
Supongo que todos los otros valores son cadenas (menos el último que es un número).
__________________
El Castellano no es mi lengua materna: discúlpenme por los errores gramaticales.
Mi blog
  #3 (permalink)  
Antiguo 30/04/2015, 08:33
Avatar de SirZoX  
Fecha de Ingreso: mayo-2006
Ubicación: Valencia
Mensajes: 124
Antigüedad: 18 años
Puntos: 2
Respuesta: Error de consulta insert

Buenas tardes GeriReshef

Poniendo la fecha tal cual me la comentas, da el mismo error, ya lo probé en su momento pero por si las moscas lo he vuelto a probar ahora y sí, sale el mismo error.

El texto "insert_customer" simplemente es un texto que muestro yo desde php para saber en qué consulta exactamente me da el error, ya que a veces lanzo varias consultas distintas por separado, simplemente es una forma de identificar.

Lo que no tengo claro es el error de SQL a lo que se refiere, la consulta ha terminado? Vale pero porqué??
  #4 (permalink)  
Antiguo 30/04/2015, 08:43
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Error de consulta insert

Los lenguajes de programación permiten recuperar los mensajes y códigos devueltos por la base de datos en los errores.
Capturalos y postea el mensaje de la base, no uno adminsitrado o creado por ti.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 30/04/2015, 08:43
 
Fecha de Ingreso: julio-2012
Ubicación: Israel
Mensajes: 360
Antigüedad: 11 años, 9 meses
Puntos: 40
Respuesta: Error de consulta insert

¿Cuál es la definición (DDL) de la tabla?
¿ClaveExternaCliente tiene una clave foranea en otra tabla? (Si la respuesta es sí, el valor 'Clave02' existe alla?)
¿La tabla tiene una clave primaria? (Si la respuesta es sí, la instrucción Insert no crea una duplicación?)
__________________
El Castellano no es mi lengua materna: discúlpenme por los errores gramaticales.
Mi blog
  #6 (permalink)  
Antiguo 03/05/2015, 14:15
Avatar de SirZoX  
Fecha de Ingreso: mayo-2006
Ubicación: Valencia
Mensajes: 124
Antigüedad: 18 años
Puntos: 2
Respuesta: Error de consulta insert

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Los lenguajes de programación permiten recuperar los mensajes y códigos devueltos por la base de datos en los errores.
Capturalos y postea el mensaje de la base, no uno adminsitrado o creado por ti.
El error que devuelve la base de datos es "The statement has been terminated.". El texto anterior simplemente lo pongo yo para identificar cual de todas las consulas que ejecuto es la que devuelve el error, simplemente identifica la funcion php que contiene la consulta, nada más.

GeriReshef, no entiendo nada de DDL.
De todos modos, y en respuesta a todas las preguntas, no tiene sentido que haga el insert desde sql server manager, y la trague, y haga exactamente la misma consulta (copy paste) desde php, y salga el error, de modo que imagino que no es un problema de claves, ni duplicados.

No sé.. estoy pensando en poner un anuncio en alguna parte y pagarle a alguien para que me lo investigue, porque necesito solucionar esto rápidamente.
  #7 (permalink)  
Antiguo 04/05/2015, 08:52
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Error de consulta insert

estas usando php con sql server verdad??? o estas usando Mysql?? lo que te pide GeriReshef(DDL) es la definicion de tus tablas....
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #8 (permalink)  
Antiguo 04/05/2015, 09:06
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Error de consulta insert

Cita:
Iniciado por SirZoX Ver Mensaje
GeriReshef, no entiendo nada de DDL.
DDL es Data Definition Language, o Lenguaje de Definición de Datos.
Se refiere a las sentencias de SQL que crean objetos de base de datos, los destruyen o lo smodifican:
- CREATE ...
- DROP ...
- ALTER ...

Si buscas en GOOGLE verás que es la primera de las definiciones.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #9 (permalink)  
Antiguo 04/05/2015, 10:14
Avatar de SirZoX  
Fecha de Ingreso: mayo-2006
Ubicación: Valencia
Mensajes: 124
Antigüedad: 18 años
Puntos: 2
Respuesta: Error de consulta insert

Efectivamente, estoy programando en php y lanzo consultas a una dbb SQL SERVER.
Además, también uso otra bdd que nada tiene que ver con la primera, y que esta sí funciona en MySQL, puede esto interferir de alguna manera??

No puedo facilitar el DDL porque la bdd SQL SERVER no es de mi propiedad, sino de una empresa que facilita a mi cliente un ERP online que ya está en marcha.

La cosa es que yo debo alimentar mi aplicación con info de ciertas tablas, a las cuales ya tengo acceso. Y en una de ellas, concretamente la de clientes, intento hacer el insert desde php, y falla, y haciendo el mismo insert desde sql manager, funciona estupendamente.
  #10 (permalink)  
Antiguo 04/05/2015, 10:21
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Error de consulta insert

Cita:
La cosa es que yo debo alimentar mi aplicación con info de ciertas tablas, a las cuales ya tengo acceso. Y en una de ellas, concretamente la de clientes, intento hacer el insert desde php, y falla, y haciendo el mismo insert desde sql manager, funciona estupendamente.
Cuando dices eso, nos estás dando la pauta de que en un 99% de probabilidades tienes errores de programación en la aplicación.
Muevo el post a PHP pàra que veas el tema desde ese lado.

Te suugiero postear los scripts de PHP que realizan la tarea a find eque los foristas de ese foro tengan qué analizar.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #11 (permalink)  
Antiguo 04/05/2015, 10:31
Avatar de SirZoX  
Fecha de Ingreso: mayo-2006
Ubicación: Valencia
Mensajes: 124
Antigüedad: 18 años
Puntos: 2
Respuesta: Error de consulta insert

Gracias gnzsolo yo.

Siguiendo tus indicaciones, apunto el código php que en primera instancia se quitó del post para que pueda servir de ayuda.

La conexión a la base de datos. Funcionar funciona, puesto que los select devuelven valores existentes en la base de datos.
Código PHP:
mssql_connect(hostuserpass) or die ("Error conexión mssql: ".mssql_get_last_message());
mssql_select_db(dbname); 

Esta es la consulta original mia, con mis datos php y que devuelve un error de que le resulta imposible convertir un string en fecha, muchos datos son "forzados" en el sentido de que muchos campos los relleno yo con datos ficticios simplemente para comprobar que el insert se realiza bien. No hay que darles demasiada importancia porque la misma consulta desde sql server funciona bien, de modo que salvo el campo de la fecha, que lo probé a formatear en más de 30 formatos distintos, el resto pueden ignorarse.
Código PHP:
/*
  $c = mssql_query("insert into ".sqltbCli." (FechaActualizacion, ClaveEmpresa, CodigoCliente, Nombre, Apellidos, Email, CIF,ClaveExternaCliente,  IdentificadorCliente) 
                                    values ('$ahora','empresa1','cliente1','".$_POST['name']."','".$_POST['ape']."','".$_POST['email']."','".$_POST['dni']."','clave2',1)") 
            or die ("Error insert_customer: ".mssql_get_last_message());
*/ 

Y esta es la función insert_customer(), que es la que incluye el query a lanzar.

Código PHP:
function insert_customer() {
  
  
$c mssql_query(" insert into Cliente (
  FechaActualizacion,
  ClaveEmpresa,
  CodigoCliente,
  Nombre,
  Apellidos,
  Email,
  CIF,
  ClaveExternaCliente ,
  IdentificadorCliente
  )
  values
  (
  '20150430 10:05:36',
  'EMPRESA01',
  'CLIENTE03',
  'NOMBRE CLIENTE 03',
  'APELLIDOS CLIENTE 03',
  '[email protected]',
  '101010101Y',
  'Clave02',
  1
  )"
) or die ("Error insert_customer: ".mssql_get_last_message());


  if (
$c$retorno True;
  else 
$retorno false;

  return 
$retorno;


Etiquetas: insert, server, sql, sql-server
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:27.