我有一个带PDO的MySQL查询:
$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';
}
所以我想要做的是在jquery变量filter = 1时搜索我的数据库以获取allowed = 1的记录。否则它应该搜索每条记录(它是1或0)。
感谢您的帮助!
答案 0 :(得分:1)
将您的Ajax请求网址更改为
$.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'){
希望有所帮助
答案 1 :(得分: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);
最后,当你通过
执行get值时$result->fetchall(PDO::FETCH_ASSOC);
答案 2 :(得分:0)
这是一项任务:
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';