我需要你的帮助。
我有一个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”是我从数据库表中比较的字段。
答案 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]);