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

Insertar STRING como DECIMAL en un campo DECIMAL(22,2)

Estas en el tema de Insertar STRING como DECIMAL en un campo DECIMAL(22,2) en el foro de Mysql en Foros del Web. Chicos, con PHP no encuentro solucion y ahora intento por mysql. en PHP entgo una variable que por alguno motivo divino no puedo pasarlo a ...
  #1 (permalink)  
Antiguo 06/06/2011, 14:21
Avatar de SirDuque  
Fecha de Ingreso: febrero-2009
Ubicación: Paso del Rey, Buenos Aires, Argentina
Mensajes: 975
Antigüedad: 15 años, 10 meses
Puntos: 89
Insertar STRING como DECIMAL en un campo DECIMAL(22,2)

Chicos, con PHP no encuentro solucion y ahora intento por mysql.

en PHP entgo una variable que por alguno motivo divino no puedo pasarlo a REAL,FLOAT,DECIMAL,DOUBLE.

y su valor es '11.75'

lo que usualmente uso es

INSERT INTO sistema_cuota (`importe`) values ('$variable');

la columna esta tiene un estructura DECIMAL(22,2)

pero como es STRING $variable por defecto me inserta '0' en la tabla.


¿Es posible que en la linea de MySql pueda solucionar este problema?

Ak esta el link del problema en PHP por si las dudas.

__________________
Mono programando!
twitter.com/eguimariano
  #2 (permalink)  
Antiguo 08/06/2011, 03:57
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 9 meses
Puntos: 574
Respuesta: Insertar STRING como DECIMAL en un campo DECIMAL(22,2)

INSERT INTO sistema_cuota (`importe`) values ($variable);

quita los delimitadores a la variable.....

asegurate que la variable contiene un valor bien formateado ###.##
(. no ,)
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #3 (permalink)  
Antiguo 08/06/2011, 07:05
Avatar de SirDuque  
Fecha de Ingreso: febrero-2009
Ubicación: Paso del Rey, Buenos Aires, Argentina
Mensajes: 975
Antigüedad: 15 años, 10 meses
Puntos: 89
Respuesta: Insertar STRING como DECIMAL en un campo DECIMAL(22,2)

cuando quiero insertarlo por sql de esta manera me dice este error:

$sql = 'INSERT INTO sistema_cuota (`importe`) values ($importe)';

Unknown column '$importe' in 'field list'

y de esta manera me dice:

$sql = "INSERT INTO sistema_cuota (`importe`) values ($importe)";

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 '' at line 1

Si el formato de $importe es 11.75.

tendra que ver la Collation ? [latin1_general_ci] igual con UTF8 tengo el mismo problema.


Nota: PHP me toma $importe como STRING por ahi acarrea el error, pero no encuentro solucion por ese lado, por eso pregunte en MySql si en la linea de SQL puedo modificar algo para que me lo tome como numeric
__________________
Mono programando!
twitter.com/eguimariano
  #4 (permalink)  
Antiguo 08/06/2011, 07:10
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 9 meses
Puntos: 574
Respuesta: Insertar STRING como DECIMAL en un campo DECIMAL(22,2)

$sql ="INSERT INTO sistema_cuota (`importe`) values (".$importe.");";

Asi forzaras a php a poner el valor de la variable

Tienes que aseguraerte que

$sql sea igual a INSERT INTO sistema_cuota (`importe`) values (11.75);

Lo puedes ver haciendo

echo $sql."<br>";

antes de lanzar la consulta.
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #5 (permalink)  
Antiguo 08/06/2011, 07:20
Avatar de SirDuque  
Fecha de Ingreso: febrero-2009
Ubicación: Paso del Rey, Buenos Aires, Argentina
Mensajes: 975
Antigüedad: 15 años, 10 meses
Puntos: 89
Respuesta: Insertar STRING como DECIMAL en un campo DECIMAL(22,2)

Cita:
Iniciado por quimfv Ver Mensaje
$sql ="INSERT INTO sistema_cuota (`importe`) values (".$importe.");";

Asi forzaras a php a poner el valor de la variable

Tienes que aseguraerte que

$sql sea igual a INSERT INTO sistema_cuota (`importe`) values (11.75);

Lo puedes ver haciendo

echo $sql."<br>";

antes de lanzar la consulta.
Código PHP:
Ver original
  1. $sql    =   "INSERT INTO sistema_cuota (`importe`) values (".$importe.")";
  2.         echo $sql."<br>";
  3.         mysql_query($sql) or die (mysql_error())
  4. ;

INSERT INTO sistema_cuota (`importe`) values (11.75)
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 '' at line 1
__________________
Mono programando!
twitter.com/eguimariano
  #6 (permalink)  
Antiguo 08/06/2011, 07:32
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 STRING como DECIMAL en un campo DECIMAL(22,2)

Por las dudas, ve quitándole los espacios vacíos entre el nombre de la tabla y el paréntesis, y entre el VALUE y su paréntesis.
No debería generar problemas, pero el SQL_MODE del servidor puede molestar algunas veces.
__________________
¿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 08/06/2011, 07:52
Avatar de SirDuque  
Fecha de Ingreso: febrero-2009
Ubicación: Paso del Rey, Buenos Aires, Argentina
Mensajes: 975
Antigüedad: 15 años, 10 meses
Puntos: 89
Respuesta: Insertar STRING como DECIMAL en un campo DECIMAL(22,2)

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Por las dudas, ve quitándole los espacios vacíos entre el nombre de la tabla y el paréntesis, y entre el VALUE y su paréntesis.
No debería generar problemas, pero el SQL_MODE del servidor puede molestar algunas veces.
Código PHP:
Ver original
  1. $sql    =   "INSERT INTO sistema_cuota(importe)values(".$importe.")";
  2.         echo $sql."<br>";
  3.         mysql_query($sql) or die (mysql_error());

INSERT INTO sistema_cuota(importe)values(11.75)
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 '' at line 1

les juro que me esta matando.


Bueno lo que hice ahora es darle el valor a $importe antes de la sentencia $sql.
$importe=11.75;
y funciona bien...
el problema es cuando $importe=$data[8]; que viene de $data=fgetcsv($fp,10000,";")

evidentemente mysql interpreta bien las cosas.
__________________
Mono programando!
twitter.com/eguimariano
  #8 (permalink)  
Antiguo 08/06/2011, 07: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 STRING como DECIMAL en un campo DECIMAL(22,2)

Entonces el problema se origina al leer el fgetcsv(), ya que el dato debe ser incorrecto en el archivo.
¿Podrías mostrarnos qué contiene esa línea del archivo CSV?
__________________
¿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 08/06/2011, 08:06
Avatar de SirDuque  
Fecha de Ingreso: febrero-2009
Ubicación: Paso del Rey, Buenos Aires, Argentina
Mensajes: 975
Antigüedad: 15 años, 10 meses
Puntos: 89
Respuesta: Insertar STRING como DECIMAL en un campo DECIMAL(22,2)

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Entonces el problema se origina al leer el fgetcsv(), ya que el dato debe ser incorrecto en el archivo.
¿Podrías mostrarnos qué contiene esa línea del archivo CSV?
Código CSV:
Ver original
  1. 900009;200104;;1;00002;2001/04/01;MARROQUINERIA NILDA;1;11.75;CO1;1;900000398;11.75;20000;8;2004/06/29;16:33:00;LAURE

Solo te puse una linea, por que son 65mil registros.
__________________
Mono programando!
twitter.com/eguimariano
  #10 (permalink)  
Antiguo 08/06/2011, 10:34
Avatar de SirDuque  
Fecha de Ingreso: febrero-2009
Ubicación: Paso del Rey, Buenos Aires, Argentina
Mensajes: 975
Antigüedad: 15 años, 10 meses
Puntos: 89
Respuesta: Insertar STRING como DECIMAL en un campo DECIMAL(22,2)

Encontre algo!


tengo el CSV.

CONCUOTAS5.txt.csv
Código CSV:
Ver original
  1. 900009;200104;;1;00002;2001/04/01;MARROQUINERIA NILDA;1;11.75;CO1;1;900000398;11.75;20000;8;2004/06/29;16:33:00;LAURE

y hola.csv
Código CSV:
Ver original
  1. 900009;200104;;1;00002;2001/04/01;MARROQUINERIA NILDA;1;11.75;CO1;1;900000398;11.75;20000;8;2004/06/29;16:33:00;LAURE

lo cual los subi a este link.

como ven son iguales...
el tema es que a CONCUOTAS5 me inserta 0.00 en mysql y hola.csv me inserta 11.75

JAJAJAJAJAJA me rio de dolor de cabeza, alguien me puede explicar cual puede ser el problema?
por que CONCUOTAS5 (original) tiene 60mil registros, y no voy a poder pasar uno a uno a mano.
__________________
Mono programando!
twitter.com/eguimariano
  #11 (permalink)  
Antiguo 08/06/2011, 10:46
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 STRING como DECIMAL en un campo DECIMAL(22,2)

La codificacion de ambos es distinta. Un archivo está en UNICODE y el otro es ANSI.
Eso puede generar problemas de lectura en la función invocada.
Graba el que usas en ANSI.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #12 (permalink)  
Antiguo 08/06/2011, 10:49
Avatar de SirDuque  
Fecha de Ingreso: febrero-2009
Ubicación: Paso del Rey, Buenos Aires, Argentina
Mensajes: 975
Antigüedad: 15 años, 10 meses
Puntos: 89
Respuesta: Insertar STRING como DECIMAL en un campo DECIMAL(22,2)

Cita:
Iniciado por gnzsoloyo Ver Mensaje
La codificacion de ambos es distinta. Un archivo está en UNICODE y el otro es ANSI.
Eso puede generar problemas de lectura en la función invocada.
Graba el que usas en ANSI.
Y como veo la codificacion y donde la modifico?


EDITO:

AAa con el bolck de nota, guardar como xD
__________________
Mono programando!
twitter.com/eguimariano
  #13 (permalink)  
Antiguo 08/06/2011, 10:55
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 STRING como DECIMAL en un campo DECIMAL(22,2)

Exactamente así.
Luego fíjate que la fuente de los datos te envíe siempre el archivo en ANSI, para que no te pase otra vez.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: decimal, string, 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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 10:00.