php
  • mysql
  • sql
  • 2014-12-05 43 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

    相關問題