【问题标题】:Converting a string to a mySql DECIMAL type将字符串转换为 mySql DECIMAL 类型
【发布时间】:2010-03-12 17:00:33
【问题描述】:

我正在尝试将有关商品价格的数据从 HTML 表单插入到 mySQL 数据库中。输入字段定义如下:

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

表单被发布到处理数据库内容的下一页。目前我只是将 $_POST['price'] 的确切内容输入到数据库字段中,该字段的类型为 DECIMAL(4,2)。我听说这是作为字符串存储的,但是每当我尝试执行此操作时,数据库都会引发错误。是否有用于在字符串和 MySQL DECIMAL 类型之间转换的 PHP 函数?还是我必须自己进行一些格式化?

【问题讨论】:

    标签: php mysql html string decimal


    【解决方案1】:

    你不应该只是“输入$_POST['...']的确切内容”到任何数据库字段:这是一扇通往SQL注入的大门。

    相反,您必须根据预期的数据库数据类型,确保您注入到 SQL 查询中的数据实际上是有效的。


    对于小数,PHP 方面的解决方案是使用floatval 函数:

    $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
    }
    

    请注意,我没有在值周围加上任何引号 ;-)

    【讨论】:

    • 如果我们对$clean_price 执行任何算术运算,floatval() 会不会造成一些精度损失?不确定 PHP 是否有内置的十进制类型...但是在这种情况下,清理 POST 数据并将其作为字符串传递不是更好吗?
    猜你喜欢
    • 2018-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-21
    • 1970-01-01
    • 2010-09-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多