PHP:验证十进制Mysqli数据类型

时间:2014-03-31 03:08:57

标签: php mysql

我有一个包含列数据类型的表,如下所示:

price decimal(6,2) unsigned NOT NULL,

我的验证码是这样的:

if ( (!empty($_POST['price'])) && (is_numeric($_POST['price'])) && (isset($_POST['price'])) > 0 ) {
    $price = ($_POST['price']);

} else{
    $price = FALSE;
    echo '<p> Only accept number and must be higher than zero</p>';

}

我使用$ _POST表单向用户提交值。但是你知道,

1 /当用户键入任何非数字值(如a,b,c等)时,它也会很好地验证。 2 /当用户键入零值时,它也会很好地验证。

然而,问题是,当我测试时没有输入任何值。我的意思是我将值保留为空并点击“提交”#39;按钮,错误消息仍按} else {部分返回,但该值仍然在技术上同时插入到表格列中,值为0.

据我所知,我可以猜测问题可能出在我选择的表格的Mysqli数据类型上,但我不知道如何纠正它。

请帮帮我吗?

2 个答案:

答案 0 :(得分:1)

您描述的内容意味着当$ price === false时您无法停止插入 (即问题不是评估;它给了你正确的信息。你在其他地方有一些编程逻辑错误)

答案 1 :(得分:1)

我认为您正在寻找的解决方案是将插入代码移动到第一个if语句。这样它只会插入值,如果它是数字而不是空。