SQL select语句在传递参数时为空

时间:2014-02-28 08:26:00

标签: php sql tsql

我正在尝试编写搜索功能,并使用多个下拉列表来搜索条件。

我有一个像

这样的sql语句
SELECT * FROM TABLE WHERE OFFICE='$office', NAME='$name', DEPARTMENT='$department';

有时候我想用特定的“名字”进行搜索,但没有谈论“部门”和“办公室”。但是,当我将Blank''传递给'$ office'和'$ department'时,它只返回没有办公室和部门的人。无论如何要克服它吗?

我尝试使用'%'而不是空白,但它也没有用。 我用php和MSSQL编码。

先谢谢

3 个答案:

答案 0 :(得分:2)

如果您想使用通配符,则不需要=,而是LIKE。不确定此查询是否有效,但请尝试:

SELECT * FROM TABLE WHERE OFFICE LIKE '$office', NAME LIKE '$name', DEPARTMENT LIKE '$department';

现在您只需检查该字段是否为空,如果是,则将其替换为%。正如我所说,我不确定。我目前没有可用于测试此数据库的数据库。

答案 1 :(得分:0)

为了实现这一点,你必须编写一些像

这样的PHP代码
$sql = "SELECT * FROM TABLE WHERE";
if(isset($office)){
    $sql .= "OFFICE='$office',";
}
if(isset($name)){
    $sql .= " NAME='$name',";
}

if(isset($department)){
    $sql .= " DEPARTMENT='$department'";
}

答案 2 :(得分:0)

您可以轻松执行以下操作:

if(isset($office) && isset($department)){
    $sql = "SELECT * FROM TABLE WHERE OFFICE='$office', NAME='$name', DEPARTMENT='$department'";
}
else{
    $sql = "SELECT * FROM TABLE WHERE NAME LIKE '$name'";
}

mysql_query($connection, $sql);
相关问题