使用PHP查询MySQL数据库(if语句)

使用PHP查询MySQL数据库(if语句),php,mysql,Php,Mysql,我需要你的帮助 我有一个PHP代码,在选择某个操作符后,我使用它来查询MySQL数据库。我从下拉列表中选择的运算符是“小于、大于和等于”。我的问题是;无论我选择哪个操作符,我从数据库中得到的结果总是针对“小于”操作符。也就是说,无论我选择“小于”、“大于”还是“等于”,结果都是一样的。我试图找到问题,但失败了。以下是我使用的代码: if ($op='LESS THAN') { $query = "SELECT * FROM tbl_reservoir WH

我需要你的帮助

我有一个PHP代码,在选择某个操作符后,我使用它来查询MySQL数据库。我从下拉列表中选择的运算符是“小于、大于和等于”。我的问题是;无论我选择哪个操作符,我从数据库中得到的结果总是针对“小于”操作符。也就是说,无论我选择“小于”、“大于”还是“等于”,结果都是一样的。我试图找到问题,但失败了。以下是我使用的代码:

            if ($op='LESS THAN') {
        $query = "SELECT * FROM tbl_reservoir WHERE res_vol < '$vol'";
    } elseif ($op='GREATER THAN') {
            $query = "SELECT * FROM tbl_reservoir WHERE res_vol > '$vol'";
    } elseif ($op='EQUAL') {
         $query = "SELECT * FROM tbl_reservoir WHERE res_vol = '$vol'";
    } 
if($op='小于'){
$query=“从储液罐中选择*,储液罐储液罐储液量<“$vol”;
}elseif($op='大于'){
$query=“从储液罐中选择*,其中储液罐>为$vol”;
}elseif($op='EQUAL'){
$query=“从tbl_蓄水池中选择*,其中res_vol='$vol';
} 

$op是一个保存运算符的变量,“res_vol”是一个我从数据库表中比较的字段。

您必须在
if
条件中使用
=
==

if ($op == 'LESS THAN')
{
  // code here
}
elseif ($op == 'GREATER THAN')
{
  // code here
}
// .......

在需要相等运算符(
=
)的位置使用赋值运算符(
=
),因此代码应为:

        if ($op=='LESS THAN') {
    $query = "SELECT * FROM tbl_reservoir WHERE res_vol < '$vol'";
} elseif ($op=='GREATER THAN') {
        $query = "SELECT * FROM tbl_reservoir WHERE res_vol > '$vol'";
} elseif ($op=='EQUAL') {
     $query = "SELECT * FROM tbl_reservoir WHERE res_vol = '$vol'";
} 
if($op=='小于'){
$query=“从储液罐中选择*,储液罐储液罐储液量<“$vol”;
}elseif($op=='大于'){
$query=“从储液罐中选择*,其中储液罐>为$vol”;
}elseif($op=='EQUAL'){
$query=“从tbl_蓄水池中选择*,其中res_vol='$vol';
} 
但是,您可以将其简化为:

static $map = array('LESS THAN' => '<', 'GREATER THAN' => '>', 'EQUAL' => '=');
if (!isset($map[$op])) {
    throw new Exception(sprintf("Unexpected operator '%s', $op));
}
$query = sprintf("SELECT * FROM tbl_reservoir WHERE res_vol %s '$vol'", $map[$op]);
static$map=array('小于'=>'',等于'=>'');
如果(!isset($map[$op])){
抛出新异常(sprintf(“意外的运算符“%s”,$op));
}
$query=sprintf(“从存储卷%s'$vol',$map[$op]中选择*);

除了答案之外-如果你只有三个选项,你不需要最后的
if($op=='EQUAL'))
行。你知道,如果你达到了这一点,那么前两个选项都没有被选择。我倾向于将该选项设置为
else
-我认为这会使代码更具可读性。你构建查询的方式会让你面临SQL注入攻击。请查看以了解如何使用参数化查询。H哈哈,有时候发现一个小问题很难。非常感谢John Woo。看到你的回答后,我觉得自己像个傻瓜。这并不是说我对接线员一无所知。我不知道自己发生了什么事。谢谢你一次again@Kriz不要称自己为傻瓜,尽管我们是人类,但我们总是犯错误:)我真的很愚蠢我是个傻瓜,罗斯。非常感谢你