php - 从复选框检索数组值并动态构建查询以选择内容

标签 php jquery html mysql sql

我有以下 html 文件以关联数组的形式发送数据。该表单使用 Jquery Ajax 动态提交(无需提交按钮)。

<html>
<form id="checkboxform" method="GET">
<input type="checkbox" name="navi[key1]" value="value1" <?php echo array_key_exists("value1",$navi)?"checked":""; ?>> Item1
<input type="checkbox" name="navi[key2]" value="value2" <?php echo array_key_exists("value2",$navi)?"checked":""; ?>> Item2
<input type="checkbox" name="navi[key3]" value="value3" <?php echo array_key_exists("value3",$navi)?"checked":""; ?>> Item3
</form>
</html>

然后我有以下 php 文件来处理表单并从 Mysql 数据库中选择数据。查询是根据用户检查的输入字段动态生成的。

    <?php

    if(isset($_GET['navi'])):

        $navi=$_GET['navi'];

        //foreach

        foreach($navi as $key =>$value):
               $query=$key."="."'".$value."'";
        endforeach;

        // run the query using PDO

        $content = $db->getRows("SELECT * FROM products WHERE   $query"); 

    endif;
    ?>

我的问题如下,如果用户选择多个复选框,如何在“$query”变量后添加“OR”。 Whick 将生成如下所示的查询:

SELECT * FROM products WHERE key1='value1' OR key2='value2' OR key3='value3'

我的代码生成以下查询,没有 OR 并且它不正确。

SELECT * FROM products WHERE key1='value1' key2='value2' key3='value3'

谢谢

最佳答案

你可以试试这个 -

    $query = array();
    foreach($navi as $key =>$value):
           $query[] = $key."="."'".$value."'"; // store in array
    endforeach;

    // run the query using PDO

    $content = $db->getRows("SELECT * FROM products WHERE " . implode(' OR ', $query)); // implode with OR

关于php - 从复选框检索数组值并动态构建查询以选择内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36449532/

相关文章:

php - 如何在 PostgreSQL 中实现循环

php - 如何提高网站标题搜索结果

javascript - 基于 css 属性使用 jQuery 选择元素?

html - 悬停时菜单高度增加的 CSS 问题

javascript - 文本取决于一天中的时间和星期几

php - 如何在使用 PHP 从 HTML 创建的 DOC 文件中包含 CSS

javascript - jQuery 切换菜单,默认隐藏在 x 像素以下,如何实现?

javascript - 如何使用angular js在母版页中设置事件菜单

html - 使用 Flex 左右对齐

javascript - 使用 ajax 和 php 提交表单