php - 验证价格值以插入销售表

标签 php mysql

我有一个表单,其中包含这样的输入:

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

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

  • 只允许输入数字。
  • 如果为空,则该值将为 0(零)并插入到 sales 表中。

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 值运行查询后,我检查了销售表,发现插入到价格列中的值是 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';       

最佳答案

问题出在您的函数中,特别是 preg_match。您收到 1,因为这是它找到的匹配项数。要修复你可以简单地添加一个结果变量输出到:

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

关于php - 验证价格值以插入销售表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24588443/

相关文章:

php - 在 joomla 中更改 slider 模块(yoocarousel)中按钮的位置

mysql - 很长的 PHP 脚本的潜在问题

php - 在 MySQL 中选择格式错误的 URL

php - SQL中有返回 "All"的符号吗

mysql - 无法根据销售额对商品进行排名,

php - laravel - 找不到新服务提供商的类

php - SQL 和 PHP 数据库访问

mysql - 在sql中对内容进行分组

mysql - PDOException::("PDO::__construct(): Unexpected server respose while doing caching_sha2 auth: 109") 与 MySQL 8/PHP 7.2/Laravel

php - 更新记录 dbal innodb silex