繁体   English   中英

如果选中复选框,则将WHERE添加到PDO查询

[英]Add WHERE to PDO query if checkbox is checked

我有一个使用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时在数据库中搜索允许= 1的记录。否则,它应该搜索每条记录(为1或0)。

感谢您的帮助!

将您的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'){ 

希望能帮助到你

让你的地方像这样

$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);

这是一个任务:

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';

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM