1

我需要你的帮助。

我有一个 PHP 代码,用于在选择某个运算符后查询 MySQL 数据库。我从下拉列表中获得的运算符是“小于、大于和等于”。我的问题是;无论我选择哪个运算符,我从数据库中获得的结果始终是“LESS THAN”运算符。也就是说,无论我选择“小于”、“大于”还是“等于”,它都会给我相同的结果。我试图定位问题,但失败了。这是我使用的代码:

            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'";
    } 

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

4

2 回答 2

1

您必须使用=====在您的if情况下

if ($op == 'LESS THAN')
{
  // code here
}
elseif ($op == 'GREATER THAN')
{
  // code here
}
// .......
于 2012-09-17T00:45:29.607 回答
1

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

        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'";
} 

但是,您可以将其简化为:

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]);
于 2012-09-17T00:46:19.743 回答