我有一个基本表单,有几个复选框。选中复选框后,它会将值附加到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&安培; 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
答案 0 :(得分:3)
首先,您需要创建一个输入数组而不是“val1”,“val2”。
只需为每个输入name
val[x]
提供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);
}
你完成了!
<强>更新强>
正如评论中所讨论的,这是您正在寻找的条件:
foreach ($vals as $val) {
$conditions[] = '`item_id` = '. $val;
}
此外,请不要忘记在此上下文中您需要OR
而不是AND
。所以,也要编辑这一行:
$sql_query .= ' where '. implode(' or ', $conditions);