gpt4 book ai didi

php - 动态 Mysql 查询 & 通过 `GET` 传递多个值

转载 作者:可可西里 更新时间:2023-11-01 08:17:26 24 4
gpt4 key购买 nike

我有一个包含多个复选框的基本表单。选中复选框后,它会将值附加到 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

最佳答案

首先,您需要创建一个输入数组而不是“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);
}

大功告成!

更新

正如评论中所讨论的,这是您正在寻找的条件:

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

此外,不要忘记在此上下文中您需要OR 而不是AND。因此,也编辑这一行:

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

关于php - 动态 Mysql 查询 & 通过 `GET` 传递多个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21424839/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com