我正在尝试将有关项目价格的数据从HTML表单插入到mySQL数据库中。输入字段定义如下:
<input type="text" name="price" value="0.00"/>
将表单发布到下一页,其中处理数据库内容。目前我只需将$ _POST ['price']的确切内容输入数据库字段,该字段的类型为DECIMAL(4,2)。我听说这是作为字符串存储的,但每当我尝试这样做时,数据库都会抛出错误。是否有用于在字符串和MySQL DECIMAL类型之间进行转换的PHP函数?或者我必须自己做一些格式化吗?
答案 0 :(得分:4)
你永远不应该只是“输入$_POST['...']
”的确切内容到任何数据库字段中:它是为SQL注入打开的一扇门。
相反,您必须根据预期的DB数据类型确保注入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
}
请注意,我没有在值周围添加任何引号; - )