Estoy tratando de insertar los datos acerca de un elemento del precio de un formulario HTML en una base de datos mySQL. El campo de entrada se define como sigue:

<input type="text" name="price" value="0.00"/>

El formulario es Enviado a la siguiente página en la que la base de datos de material es tomado cuidado de. Actualmente acabo de entrar en el contenido exacto de $_POST[‘precio’] en el campo de base de datos, que es de tipo DECIMAL(4,2). Me enteré de que este se almacena como una cadena, pero la base de datos arroja un error cada vez que intento hacer esto. Hay una función de PHP para convertir entre cuerdas y MySQL, el tipo de DECIMAL? O voy a tener que hacer un poco de formato a mí mismo?

InformationsquelleAutor benwad | 2010-03-12

1 Comentario

  1. 4

    Nunca se debe «entrar en el contenido exacto de $_POST['...']» en cualquier campo de base de datos : es una puerta abierta a las Inyecciones de SQL.

    Lugar, usted debe asegurarse de que los datos que son de inyección en las consultas de SQL son realmente válidos, de acuerdo a lo esperado DB tipos de datos.


    Para los decimales, una solución, en el PHP lado, sería el uso de la floatval función :

    $clean_price = floatval($_POST['price']);
    $query = "insert into your_table (price, ...) values ($clean_price, ...)"
    if (mysql_query($query)) {
        //success
    } else {
        echo mysql_error();   //To help, while testing
    }

    Nota que yo no he puesto ninguna cotización cercana al valor 😉

    • No floatval() provocar cierta pérdida de precisión si se fuera a realizar aritmética en $clean_price? No estoy seguro si PHP tiene un built-in de tipo decimal…pero en este caso, ¿no sería mejor para desinfectar el POST de los datos y pasar en como una cadena de caracteres?

Dejar respuesta

Please enter your comment!
Please enter your name here