Insertar decimales desde php a phpMyadmin

publicado por: Anonymous

como estan?
Tengo una duda, quiero ingresar un valor desde php, como por ejemplo 155.60, pero al agregarlo a la base de datos de phpMyadmin, me la guarda como 155, osea, lo redondea, pero necesito si o si la presicion. Coloque FLOAT en la BD, tambien probe con REAL y DOUBLE. Pero hace lo mismo.
Este es mi código desde php:

    $sql="insert into productos (idProducto,Nombre_Producto, precio, Detalles, id_Tipo_Moneda,
                                    id_Categoria, Stock, idEstadoEliminacion, CantidadAlarma )values(:codProd,:nombre, :pre, :det, :tmoneda,
                                    :cat, :stock, :estelim, :Alarma)";

                                    $sentencia = $con->prepare($sql);
                                    $sentencia-> bindParam(':codProd', $codProd, PDO::PARAM_STR);
                                    $sentencia-> bindParam(':nombre', $nom, PDO::PARAM_STR);
                                    $sentencia-> bindParam(':pre', $pre, PDO::PARAM_INT);
                                    $sentencia-> bindParam(':det', $det, PDO::PARAM_STR);
                                    $sentencia-> bindParam(':tmoneda', $tMoneda, PDO::PARAM_STR);
                                    $sentencia-> bindParam(':cat', $cat, PDO::PARAM_INT);
                                    $sentencia-> bindParam(':stock', $stock, PDO::PARAM_INT);
                                    $sentencia-> bindParam(':estelim', $estel, PDO::PARAM_INT);
                                    $sentencia-> bindParam(':Alarma', $Alarma, PDO::PARAM_INT);

Alguien me podría ayudar?

solución

Para guardar datos con decimales con una mayor presición; debes utilizar el tipo de dato DECIMAL() el cual te va a solicitar lo siguiente:

DECIMAL(A, B);
  1. A es el número máximo de espacio que la columna tendrá
  2. B es el número tomado para hacer la presición

Los datos numéricos que requieren mayor grado de precisión como lo son: precios o unidades monetarias bancarias

EXPLICACIÓN

Si por ejemplo tus cantidades fueran siempre del rango siguiente:

desde 100.00
hasta 999.99

Entonces la declaración de tu columna debería ser:

precio DECIMAL(5, 2)

Donde la estamos indicando que habrá un total de 5 cifras para los valores ingresados en la columna precio, pero que 2 de ellos serán ocupados para almacenar los números decimales del registro de cada precio

aclaración

Dentro de la estructura de tu código PHP, tienes una columna por llenar llamada precio que después tratas de este modo:

$sentencia-> bindParam(':pre', $pre, PDO::PARAM_INT);

Lo anterior es incorrecto, por que si estas esperando un precio con decimales, el tipo de dato INT no nos ayuda entonces debes cambiarlo por

$sentencia-> bindParam(':pre', $pre, PDO::PARAM_STR);

Por que sería la aproximación mas cercana para tratar un tipo de dato con decimales

Respondido por: user75901

Leave a Reply

Your email address will not be published. Required fields are marked *