2014-05-19 76 views
1

WHERE到PDO查詢我有一個MySQL查詢與PDO:添加如果複選框被選中

$ac_term = "%".$_GET['term']."%"; 
$query = "SELECT * FROM table where name like :term"; 
$query .= $filterquery; 
$result = $conn->prepare($query); 
$result->bindValue(":term",$ac_term); 
$result->execute(); 

我使用的是自動完成的jQuery代碼這一「術語」。

$('#input').autocomplete({ 
    minLength: 2, 
    source: function (request, response) { 
     $.ajax({ 
      url: 'suggest_zip.php', 
      type: "POST", 
      data: { 
       term: request.term, 
       filter: '1' 
      }, 
      success: function (data) { 
       response(data); 
      } 
     }); 
    } 

}) 

如果你看看第一塊代碼,你可以看到我試過$ query。= $ filerquery。 $ filterquery這裏定義:

$filter = "%".$_GET['filter']."%"; 

if($filter = '1'){ 
     $filterquery = 'WHERE allowed = 1'; 
    } 
else{ 
     $filterquery = 'WHERE allowed = 1 OR allowed = 0'; 
    } 

所以我想要做的就是尋找我的記錄數據庫,在那裏允許= 1時,jQuery的變量過濾器= 1,否則就應該尋找每一條記錄(這是1或0)。

您的幫助表示讚賞!

+1

'如果($過濾器= '1'){'是一個賦值。如果它是一個比較,它仍然不能用'%xyz%'。你還會在你的連接SQL中使用兩個'WHERE'子句。 – mario

回答

1

更改您的Ajax請求的URL

$.ajax({ 
    url: 'suggest_zip.php?filter=' + ($('#your_checkbox_selector').is(':checked') ? 1 : 0), 
    //... 

而且,解決您的PHP條件

//This is an assignment and then it's always evaluated true (since equal to 1) 
if($filter = '1'){ 

希望它可以幫助

+0

感謝您的回答,它幫助了我很多!我想感謝其他人的回答,因爲所有答案的組合都幫助我實現了這個目標。 – colin

0

讓你那裏像這樣

$filter_con = $_POST['filter']; 

$filter = "%".$_POST['filter']."%"; 

`enter code here` if($filter_con == '1'){ 
     $filterquery = 'AND allowed = 1'; 
    } 
else{ 
     $filterquery = 'AND allowed = 1 OR allowed = 0'; 
    } 

1部分: - 您正在使用AJAX type: "POST"所以使用$_POST沒有$_GET 2: - 沒有必要使用

$result->bindValue(":term",$ac_term); 

它會也工作: -

$result->bindValue("term",$ac_term); 

去年,當你通過

$result->fetchall(PDO::FETCH_ASSOC); 
0

此執行GET值賦值:

if($filter = '1') 

你必須使用==

if($filter == '1') { 
    $filterquery = 'WHERE allowed = 1'; 
} 
else { 
    $filterquery = 'WHERE allowed = 1 OR allowed = 0'; 
} 

在一條線的捷徑:

$filterquery = $filter == '1' ? 'WHERE allowed = 1' : 'WHERE allowed = 1 OR allowed = 0'; 
相關問題