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

Insertar Campo costo decimal?

Estas en el tema de Insertar Campo costo decimal? en el foro de Mysql en Foros del Web. Holas. Trato de insertar en una tabla varios campos como son texto y varchar pero en uno existe costo q es de tipo decimal(5,1) y ...
  #1 (permalink)  
Antiguo 29/07/2010, 11:12
Avatar de elremolino  
Fecha de Ingreso: mayo-2007
Mensajes: 211
Antigüedad: 17 años, 5 meses
Puntos: 2
Insertar Campo costo decimal?

Holas.

Trato de insertar en una tabla varios campos como son texto y varchar pero en uno existe costo q es de tipo decimal(5,1) y me envia este error! al momento de insertarlo.

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'costo='350,00'' at line 1

Alguna ayuda?
  #2 (permalink)  
Antiguo 29/07/2010, 11:55
Avatar de DooBie  
Fecha de Ingreso: septiembre-2004
Mensajes: 1.101
Antigüedad: 20 años, 2 meses
Puntos: 71
Respuesta: Insertar Campo costo decimal?

Cambia la , por un .
  #3 (permalink)  
Antiguo 29/07/2010, 16:21
Avatar de elremolino  
Fecha de Ingreso: mayo-2007
Mensajes: 211
Antigüedad: 17 años, 5 meses
Puntos: 2
Respuesta: Insertar Campo costo decimal?

Cita:
Iniciado por DooBie Ver Mensaje
Cambia la , por un .
igual hermano no funciona cambiandole la coma por el punto, ademas ese campo de costo tambien puede aceptar nulos y nose pq no inserta

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'costo='350.00'' at line 1

Alguna ayuda?
  #4 (permalink)  
Antiguo 29/07/2010, 16:30
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Insertar Campo costo decimal?

Postea la sentencia completa, y si es posible el CREATE TABLE de la tabla implicada. Es posible que haya errores que no se vean solamente mirando el dato a ingresar.
__________________
¿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 29/07/2010, 20:34
Avatar de elremolino  
Fecha de Ingreso: mayo-2007
Mensajes: 211
Antigüedad: 17 años, 5 meses
Puntos: 2
Respuesta: Insertar Campo costo decimal?

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Postea la sentencia completa, y si es posible el CREATE TABLE de la tabla implicada. Es posible que haya errores que no se vean solamente mirando el dato a ingresar.

CREATE TABLE IF NOT EXISTS TExcursion (
id int(11) NOT NULL auto_increment,
id_bloque int(11) NOT NULL default '0',
nombre varchar(150) NOT NULL,
nombre2 varchar(150) NOT NULL,
titulo varchar(150) NOT NULL,
titulo2 varchar(150) NOT NULL,
url varchar(150) NOT NULL,
url2 varchar(150) NOT NULL,
orden int(11) NOT NULL,
texto text,
texto2 text,
key_titulo text NOT NULL,
key_des text NOT NULL,
key_titulo2 text NOT NULL,
key_des2 text NOT NULL,
costo decimal(5,1),
PRIMARY KEY (id)

) Type=InnoDB;

Esa es la BD

la sentencia es

$categoria=$_POST['categoria'];
$nombre=$_POST['nombre'];
$nombre2=$_POST['nombre2'];
$titulo=$_POST['titulo'];
$titulo2=$_POST['titulo2'];
$url=$_POST['url'];
$url2=$_POST['url2'];
$orden=$_POST['orden'];
$texto=$_POST['texto'];
$texto2=$_POST['texto2'];
$key_titulo=$_POST['key_titulo'];
$keywords=$_POST['keywords'];
$key_des=$_POST['key_des'];
$key_titulo2=$_POST['key_titulo2'];
$keywords2=$_POST['keywords2'];
$key_des2=$_POST['key_des2'];
$costo=$_POST['costo'];


$consulta="insert into TExcursion set ";
$consulta.="id_bloque='$categoria', ";
$consulta.="nombre='$nombre', ";
$consulta.="nombre2='$nombre2', ";
$consulta.="titulo='$titulo', ";
$consulta.="titulo2='$titulo2', ";
$consulta.="url='$url', ";
$consulta.="url2='$url2', ";
$consulta.="orden='$orden', ";
$consulta.="texto='$texto', ";
$consulta.="texto2='$texto2', ";
$consulta.="key_titulo='$key_titulo', ";
$consulta.="keywords='$keywords', ";
$consulta.="key_des='$key_des', ";
$consulta.="key_titulo2='$key_titulo2', ";
$consulta.="keywords2='$keywords2', ";
$consulta.="key_des2='$key_des2' ";
$consulta.="costo='$costo' ";

mysql_query($consulta,$conexion) or die (mysql_error());

Si me ayudan tb como hacerlo en un procedimiento almacenado seria genial
espero q esto les ayude a mi consulta
Saludos

Última edición por elremolino; 29/07/2010 a las 20:39
  #6 (permalink)  
Antiguo 30/07/2010, 03:57
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Insertar Campo costo decimal?

Bien, si esto lo has copiado y pegado (es decir, es una copia exacta), el problema puede estar aquí:
Código PHP:
Ver original
  1. $consulta.="key_des2='$key_des2' "; <---
  2. $consulta.="costo='$costo' ";

Si te fijas con cuidado, le falta la coma que separa el valor que provee la variable $key_des2 del nombre del campo "costo", por lo que luego en la sentencia esto quedaría:
Código MySQL:
Ver original
  1. key_des2 = 'loquesea' costo=3.50
lo cual es obviamente un error de sintaxis.
Ademas, en la construcción de la sentencia estás mezclando sintaxis de dos sentencias distintas: Estás poniendo INSERT y usando la sintaxis de UPDATE, lo que es un error total.

Lo que debería ir sería:
Código MySQL:
Ver original
  1. insert into TExcursion(id_bloque,
  2.  nombre, nombre2, titulo, titulo2,
  3.  url, url2, orden, texto, texto2,
  4.  key_titulo, keywords, key_des,
  5.  key_titulo2, keywords2, key_des2,
  6.  costo)
  7. VALUES('$categoria','$nombre', '$nombre2', '$titulo',
  8.  '$titulo2', '$url', '$url2', '$orden', '$texto', '$texto2',
  9.  '$key_titulo', '$keywords', '$key_des', '$key_titulo2',
  10.  '$keywords2', '$key_des2', '$costo')

Como se puede ver, había más de un problema, pero no se veían hasta analizar la sentencia completa.
Respecto al campo de la tabla, a mi entender te puede resultar corto, porque el máximo número que puede almacenar es 999,9. No te olvides que el punto decimal ocupa un byte de la longitud declarada (5 espacios, 3 para enteros, 1 para el unto y 1 para el decimal).
¿Eso te alcanzará?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #7 (permalink)  
Antiguo 30/07/2010, 09:47
Avatar de DooBie  
Fecha de Ingreso: septiembre-2004
Mensajes: 1.101
Antigüedad: 20 años, 2 meses
Puntos: 71
Respuesta: Insertar Campo costo decimal?

A todo esto, una pregunta, al ser un campo numerico, no seria mejor poner el valor entre ' y ', sé que lo acepta igual, pero no seria mas correcto (y mas rapido) sin las comillas simples?
  #8 (permalink)  
Antiguo 30/07/2010, 10:09
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Insertar Campo costo decimal?

Todo valor numérico debe ir sin apóstrofes ('). Si los pones entre apostrofos obligas a MySQL a realizar una conversión implícita, y dado el caso puedes tener un problema de "data truncated in..." que no hayas resuelto.

La regla de trabajo más general es simple: Los datos se deben validar en la aplicación, no en la base. Se pueden verificar contra la base, pero no es la base la que debe aprobarlos. Para eso los lenguajes de programación tienen muchísimas más capacidades.

Pero debes recordar que la generación del string está afectada por la regionalización de la PC cliente, por lo que tienes que asegurarte de que los valores decimales entren con puntos y no con comas.
PHP tiene funciones específicas para eso ()
__________________
¿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 30/07/2010, 19:31
Avatar de elremolino  
Fecha de Ingreso: mayo-2007
Mensajes: 211
Antigüedad: 17 años, 5 meses
Puntos: 2
Respuesta: Insertar Campo costo decimal?

Finalmente Problema resuelto Muchas Gracias, si alguien podria proporcionarme un material de mysql asi como enviar un procedimiento almacenado desde php

Gracias

Etiquetas: costo, decimal, campos
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 01:06.