php
  • mysql
  • sql
  • 2014-12-05 44 views -2 likes 
    -2

    我有以下SQL查询:返回所有值一个=科拉姆在SQL/PHP

    $workspace = $_GET['workspace']; 
    $location = $_GET['location']; 
    
    $query="SELECT * FROM `offices` WHERE (`workspace` LIKE '%".$workspace."%') AND (`county` = '$location') AND (`active` = 'yes') LIMIT 0, 30 "; 
    $result=mysql_query($query); 
    

    的$位置值从一种形式返回先前的网页,其中有32个县名单上,编号从1-32。我想要一个选项来选择“所有县”,这将返回一个匹配查询和任何县的其他标准的结果。县的列表存储为SQL表中列中1-32的数字。

    如果最近被问到,但无法找到任何东西,道歉。谢谢!

    +4

    ** WARNING **您使用的是过时的数据库API,并利用的,以SQL注入。考虑验证和消毒用户输入并使用更新的数据库API。 – 2014-12-05 13:20:15

    +0

    而不是强制查询中的所有县,只需写一个新的条件,如果位置是1-32,那么您删除县,其中条款 – 2014-12-05 13:24:25

    +0

    另外,请注意,没有ORDER BY的LIMIT(相当)没有意义。 – Strawberry 2014-12-05 13:25:00

    回答

    1
    $workspace = mysql_real_escape_string($_GET['workspace']); 
    
    $location = mysql_real_escape_string($_GET['location']); 
    
    $query="SELECT * FROM `offices`"; 
    
    $conditions = array("`active` = 'yes'"); 
    
    if(!empty($workspace)) 
    { 
    $conditions []= "`workspace` LIKE '%".$workspace."%'" 
    } 
    
    if(!empty($location)) 
    { 
    $conditions []= "(`county` = '$location')"; 
    } 
    
    if(!empty($conditions)) 
    { 
    $query .= " WHERE " . implode(' AND ', $conditions); 
    } 
    
    $query .= "LIMIT 0, 30 "; 
    
    $result=mysql_query($query); 
    

    这是一个有点粗糙和准备,但应该这样做

    在贵国名单刚刚碰到这样的:

    <select name="location"> 
    <option id="0">All Countries</option> 
    <option id="1">...</option> 
    </select> 
    
    0

    我没听清楚你们的问题。但下面就给你做什么简单的想法:

    $locationCondition = "(`county` = '$location') AND "; 
    if ($location == "ALL") 
        $locationCondition = ""; 
    $query="SELECT * FROM `offices` WHERE (`workspace` LIKE '%".$workspace."%') AND ".$locationCondition."(`active` = 'yes') LIMIT 0, 30 "; 
    
    0

    我希望这将有助于我认为

    $query="SELECT * FROM `offices` WHERE (`workspace` LIKE '%".$workspace."%') AND (`county` in ('$location')) AND (`active` = 'yes') LIMIT 0, 30 "; 
    
    +0

    看起来它回答了直接的问题,但是OP-真的注意到其他人在这里也在说些什么 - 你正在构建对SQL注入攻击开放的代码,这并不好! – 2014-12-05 14:04:27

    相关问题