我有一个表格,其中一个输入如下:
<input name="price" type="text" />
我验证它以便我可以插入数据库。我想要的要求是:
1)验证步骤如下:
// Validate price:
if (empty($_POST['price'])){
$price = 0;
} elseif(!empty($_POST['price'])) {
$price = is_decimal($_POST['price']);
} else {
$price = TRUE;
}
2)查询将价格插入销售表:
$q ="INSERT INTO sales (price) VALUES ('$price')";
在使用$ price变量的EMPTY值运行查询后,我检查了sales表,发现插入price列的值是1.00,但不是我期望的0.00。
我做错了什么?你能帮忙吗?感谢
注意:
这是一个名为 is_decimal 的函数:
function is_decimal ($price){
$price = trim($price);
$price = preg_match('/^(\d)(.\d)?$/', $price);
$price = round($price, 2);
return $price;
}
Sales
表:
$query = 'CREATE TABLE sales (
sale_id int(10) unsigned NOT NULL auto_increment,
price decimal(6,2) unsigned NOT NULL,
PRIMARY KEY (sale_id),
) ENGINE = MYISAM';
答案 0 :(得分:0)
问题出在你的职能范围内,特别是preg_match
。您收到1
,因为这是找到的匹配项数。要解决此问题,您只需添加结果变量即可输出到:
function is_decimal ($price){
$price = trim($price);
preg_match('/^(\d)(.\d)?$/', $price, $result);
$price = round($result, 2);
return $price;
}