【问题标题】:PHP Get Number From Text Input And Compare To Decimal From DBPHP从文本输入中获取数字并与数据库中的十进制进行比较
【发布时间】:2014-09-29 16:25:24
【问题描述】:

我正在运行一些定期从 MySQL 数据库查询的 PHP。

在我的数据库中,我有一个十进制 (5,4) 字段,其中包含各种值,其中一些是实整数,一些是十进制数。

我想从表单中获取<input type="text"> 标记,$_GET 用户输入的数字,然后将其与数据库中的值进行比较。

这三种方法中哪一种是解决此问题的最佳方法:

  1. $_GET['user_value] 变量转换为浮点数,然后与 DB 值进行比较。
  2. $_GET['user_value] 变量转换为整数,然后与 DB 值进行比较。
  3. $_GET['user_value] 都转换为字符串,然后比较两者。

顺便说一句:我需要小数点后的所有信息。

MY CODE - $user_answer 是用户的输入,$correct_answer 是 DB 值

<?php
switch ($grid_type)
    {
        //If Single: Just Match Two Correct Answers
        case "single": 

            if($user_answer === $correct_answer)
            {
                $is_correct = 1;
            }
            else
            {
                $is_correct = 0;
            }

        break;

        //If Multiple: Check to see if user_answer Matches any of correct_answers
        case "multiple": 

            if($user_answer === $correct_answer OR $correct_answer_2 OR $correct_answer_3 OR $correct_answer_4 OR $correct_answer_5)
            {
                $is_correct = 1;
            }
            else
            {
                $is_correct = 0;
            }

        break;

        //If range: Check if user_answer is between the two range values
        case "range": 

            if($user_answer > $correct_range_bottom AND $user_answer < $correct_range_top)
            {
                $is_correct = 1;
            }
            else
            {
                $is_correct = 0;
            }

        break;

        default:
        "An Error Has Occured - All Of Your Base Are Belong To Us.";
    }
?>

【问题讨论】:

  • 到目前为止,您为此编写了什么代码?还是您发布规范工作是希望有人免费为您编写代码?
  • 数值比较,特别是当您期望相等时,非常困难并且是特定于应用程序的。 (是钱吗?是建筑材料的尺寸吗?是温度吗?)你还没有描述你的应用程序。不可能提供任何建议,只能说当两个浮点数恰好彼此相等时,这几乎总是一种侥幸。
  • 感谢您的提醒 - 我知道它看起来像是在钓鱼。添加了我的实际代码。
  • 从 float 转换为 int 意味着以某种方式截断或舍入,我不确定这是否是您想要的。如果您不介意丢失信息(小数部分),那么请务必将其转换为 int 并进行比较。这比比较字符串或浮点数更容易。
  • 为澄清而编辑。

标签: php mysql variable-types


【解决方案1】:

@Tom 您列出的解决方案都不好。 你想做的是这样的:

然后获取用户输入的任何值(使用 POST/GET 请求 - 首选发布)

$user_value = $_POST['user_value'];
if(is_numeric(str_replace('.','',$user_value))){
$user_value = sprintf('%0.4f',$user_value);
echo $user_value;
}else{
echo 'Wrong number entered';
}

然后你与数据库中的值进行比较。

【讨论】:

  • 感谢您的回答。不确定我是否理解用户如何在输入字段中输入错误的数字。
  • 输入字段为文本。这意味着用户可以输入任何内容。 (例如:字母、数字、下划线、特殊字符、所有......)
  • 我的朋友,我一测试就可以。耐心是一种美德。
猜你喜欢
  • 1970-01-01
  • 2019-08-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多