我有一个表单,其中包含这样的输入:
<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/