Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Tengo un problema con PHP y MSSQL

Estas en el tema de Tengo un problema con PHP y MSSQL en el foro de SQL Server en Foros del Web. Gente, q tal? Les escribo por lo siguiente. Estoy trabajando en una aplicación PHP y MSSQL. Estoy teniendo un problema con un insert en la ...
  #1 (permalink)  
Antiguo 08/12/2005, 11:35
 
Fecha de Ingreso: julio-2003
Mensajes: 43
Antigüedad: 21 años, 5 meses
Puntos: 0
Tengo un problema con PHP y MSSQL

Gente, q tal?
Les escribo por lo siguiente. Estoy trabajando en una aplicación PHP y MSSQL.
Estoy teniendo un problema con un insert en la base especificamente en un solo campo.
este es el Query

Código PHP:
$link db_connect();
$sql1 "INSERT INTO historial_host (id_host, fecha_down) VALUES ('" $id "', '" date("Ymd H:i:s") . "')";
echo 
"<TD>".$sql1."</TD>";
mssql_query($sql1);// or Die("Error en la consulta n° 1/0"); 
Funciona perfecto excepto q no inserta los segundos.
Si escribo el query resultante en pantalla queda así:
INSERT INTO historial_host (id_host, fecha_down) VALUES ('320', '" . date("20051208 10:45:32") . "

Pero cuando voy a ver el campo insertado en la base me aparece: 20051208 10:45:00 Y si realizo una consulta de este campo como es obvio me trae el resultado con los segundos en 00.

El campo en la base MSSQL es de tipo smalldatetime. Tienen alguna idea de q puede ser lo q esta fallando?

No creo q sea problema del campo tipo smalldatetime porq toma los segundos y si cambio a mano los segundos y hago un query sobre ese campo veo los segundos q cambié.

Muchas gracias
  #2 (permalink)  
Antiguo 08/12/2005, 17:27
Avatar de Mithrandir
Colaborador
 
Fecha de Ingreso: abril-2003
Mensajes: 12.106
Antigüedad: 21 años, 8 meses
Puntos: 25
Prueba iniciando una sesión de SQL Profiler para averiguar que es lo que recibe en realidad el servidor. De esa manera verás si recibe o no los segundos.

Probablemente el manejador de mssql de PHP no esté tomando en cuenta los segundos adecuadamente.

Un paso previo es desde el mismo PHP imprimir en pantalla la sentencia justo antes de mandarla ejecutar, para saber que es lo que se generó.
__________________
"El hombre, en su orgullo, creó a Dios a su imagen y semejanza."
Friedrich Nietzsche
  #3 (permalink)  
Antiguo 08/12/2005, 21:01
 
Fecha de Ingreso: julio-2003
Mensajes: 43
Antigüedad: 21 años, 5 meses
Puntos: 0
Gracias por la respuesta,
es justamente lo q hice en la linea debajo de la generación del query.
echo "<TD>".$sql1."</TD>";
Eso me arroja como resultado lo siguiente:
INSERT INTO historial_host (id_host, fecha_down) VALUES ('320', '" . date("20051208 10:45:32") . "

Tengo q suponer q los datos se estan enviando de forma correcta ya q por pantalla se muestran de esa manera.
  #4 (permalink)  
Antiguo 09/12/2005, 14:27
Avatar de Mithrandir
Colaborador
 
Fecha de Ingreso: abril-2003
Mensajes: 12.106
Antigüedad: 21 años, 8 meses
Puntos: 25
Esa intrucción no pasaría el parser de SQL server. En SQL Server las comillas para cadenas son simples, las dobles son para indicar nombres de campos (equivalen a los corchetes). Tu sentencia debe quedar como esto:
Código:
INSERT INTO historial_host (id_host, fecha_down) VALUES ('320', '20051208 10:45:32')
O mejor aún:
Código:
INSERT INTO historial_host (id_host, fecha_down) VALUES (320, '2005-12-08 10:45:32')
__________________
"El hombre, en su orgullo, creó a Dios a su imagen y semejanza."
Friedrich Nietzsche
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 00:12.