动态Mysql查询和通过"GET"传递多个值

  • 本文关键字:GET 动态 查询 Mysql php mysql
  • 更新时间 :
  • 英文 :


我有一个基本表单,具有多个复选框。当检查复选框时,它将将值附加到AJAX调用的URL。将这些值传递给mypage.php?item1=1&item2=2&item3=3后,我使用get ['item']来检索和存储这些值,以便在SQL查询中使用。此问题的复杂性是传递的值可能会有所不同,因为它基于复选框。例如,您可以传递1个值或传递所有三个值。我的问题是:如何使这种动态与SQL查询一起使用?如果通过多个值,则查询将在WHERE条款中需要AND的其他项目。

<script>
$('#submitForm').click(function() {
    var url = "'www.mysite.com/mypage.php";
    if ($("#checkbox_form").serialize().length > 0) {
        url += "?" + $("#checkbox_form").serialize();     
    }
    $.getJSON(url)
});
</script>
<form name="checkbox_form" id="checkbox_form">
    <input type="checkbox" value="1" id="item1" name="val1" />
    <input type="checkbox" value="2" id="item2" name="val2" />
    <input type="checkbox" value="3" id="item3" name="val3" />
    <input type="submit" id="submitForm" value="Submit Form" />
<form>

mypage.php?item1 = 1&amp; item2 = 2

$item = $_GET['item#']; 
$sql_query = "SELECT info From Products Where :item# AND item#";
$sql_prepare = $db_con->prepare($sql_query);
if (!$sql_prepare->execute(array(':item#' => $item)))
//rest of code

首先,您需要创建一系列输入,而不是" val1"," val2"。

只需给出每个输入一个val[x]name,例如val[1]val[2]等。或者,您可以让它成为一个新的数组元素:val[]

然后,在构建查询之前,您需要使用php foreach处理此问题,例如:

$sql_query = "SELECT info From Products";
$conditions = array();
if (isset($_GET['val']) && is_array($_GET['val'])) {
    $vals = $_GET['val'];
    foreach ($vals as $key => $val) {
        $conditions[] = '`field'. $key .'` = '. $val;
        // You should change the conditions the way you want, I'm not sure about what you want here.
    }
}
if (count($conditions) > 0) {
    $sql_query .= ' where '. implode(' and ', $conditions);
}

你完成了!

update

如评论中所述,这是您要寻找的条件:

    foreach ($vals as $val) {
        $conditions[] = '`item_id` = '. $val;
    }

此外,别忘了您在这种情况下需要OR而不是AND。因此,也编辑此行:

    $sql_query .= ' where '. implode(' or ', $conditions);

最新更新