2010-03-12 83 views
1

我试图插入有关项目的价格从一个HTML表单到MySQL数据库中的数据。输入字段的定义如下:将字符串转换到MySQL DECIMAL类型

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

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

回答

3

您不应该只将“”输入到$_POST['...']的确切内容“到任何数据库字段中:它是打开SQL注入的门。

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


对于小数,一个解决方案,在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 
} 

请注意,我没有把任何报价角落找寻价值;-)

+1

如果我们要对'$ clean_price'执行任何运算,floatval()会导致精度的损失吗?不确定PHP是否具有内置的十进制类型......但在这种情况下,对POST数据进行消毒并将其作为字符串传递是不是更好? – pixelfreak 2012-06-10 03:51:52

相关问题