【发布时间】:2014-09-29 16:25:24
【问题描述】:
我正在运行一些定期从 MySQL 数据库查询的 PHP。
在我的数据库中,我有一个十进制 (5,4) 字段,其中包含各种值,其中一些是实整数,一些是十进制数。
我想从表单中获取<input type="text"> 标记,$_GET 用户输入的数字,然后将其与数据库中的值进行比较。
这三种方法中哪一种是解决此问题的最佳方法:
- 将
$_GET['user_value]变量转换为浮点数,然后与 DB 值进行比较。 - 将
$_GET['user_value]变量转换为整数,然后与 DB 值进行比较。 - 将
$_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