我正在尝试将关于商品价格的数据从超文本标记语言表单插入到mySQL数据库中。输入字段定义如下:
<input type="text" name="price" value="0.00"/>表单被POSTed转到下一页,在该页中数据库内容将得到处理。目前,我只是在数据库字段中输入$_POST‘’price‘的确切内容,它的类型为DECIMAL(4,2)。我听说这是作为字符串存储的,但每当我尝试这样做时,数据库都会抛出一个错误。有没有一个函数可以在字符串和MySQL DECIMAL类型之间进行转换?或者我必须自己进行一些格式化?
发布于 2010-03-13 01:07:17
您永远不应该只是在任何数据库字段中“输入$_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
}请注意,我没有用引号将值括起来;-)
https://stackoverflow.com/questions/2434374
复制相似问题