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

时间:2012-09-17 00:43:12

标签: php mysql

我需要你的帮助。

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

            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”是我从数据库表中比较的字段。

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分: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]);