验证价格值以便插入销售表

时间:2014-07-05 16:33:03

标签: php mysql

我有一个表格,其中一个输入如下:

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

我验证它以便我可以插入数据库。我想要的要求是:

  • 只允许号码。
  • 如果它为空,则该值将为0(零)插入销售表。

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';       

1 个答案:

答案 0 :(得分:0)

问题出在你的职能范围内,特别是preg_match。您收到1,因为这是找到的匹配项数。要解决此问题,您只需添加结果变量即可输出到:

function is_decimal ($price){
        $price = trim($price);
        preg_match('/^(\d)(.\d)?$/', $price, $result);
        $price = round($result, 2);
return $price;
}