Php 如何检查是否所有$\u POST变量都是用foreach循环设置的

Php 如何检查是否所有$\u POST变量都是用foreach循环设置的,php,Php,我想检查是否设置了给定的$\u post变量,然后执行一个查询(这是另一个主题)。但我有一个很大的麻烦,5个小时我真的无法通过它。。这是我的功能代码 <?php function post_category_isset() { global $connect; $input = sanitize('category'); $query = mysqli_query($connect, "SELECT term_id FROM term_taxonomy WHERE

我想检查是否设置了给定的$\u post变量,然后执行一个查询(这是另一个主题)。但我有一个很大的麻烦,5个小时我真的无法通过它。。这是我的功能代码

<?php
function post_category_isset()
{
    global $connect;

    $input = sanitize('category');
    $query = mysqli_query($connect, "SELECT term_id FROM term_taxonomy WHERE taxonomy = '$input'");

    while ($row = mysqli_fetch_assoc($query)) {

        $category_id [] = $row['term_id'];
        $result = '\'' . implode('\',\'', $category_id) . '\'';

        foreach ($row as $result) {

            $query1 = mysqli_query($connect, "SELECT name FROM terms WHERE term_id = $result");
            $fetch = mysqli_fetch_assoc($query1);
            $value = $fetch['name'];
            if (isset($_POST[$value])) {
                echo "if(isset($_POST[$value]) OR";

                return true;
            }
        }
    }
}


?>

这里您不必使用两个单独的查询,您可以在一个查询中完成所有操作

SELECT name 
FROM terms 
WHERE term_id IN (
    SELECT term_id 
    FROM term_taxonomy 
    WHERE taxonomy = '$input'
)
因此,您的
post\u category\u isset()
函数如下所示:

function post_category_isset(){
    global $connect;

    $input = sanitize('category');
    $query = mysqli_query($connect, "SELECT name FROM terms WHERE term_id IN (SELECT term_id FROM term_taxonomy WHERE taxonomy = '$input')");
    while ($row = mysqli_fetch_assoc($query)) {
        $value = $row['name'];
        if (isset($_POST[$value])) {
            // your code
        }
}

在第二个查询中,您到底想做什么?从第一个查询中,我得到类别的id-s,从第二个查询中,我得到类别名称,它们存储在数据库的另一个表中。我在下面给出了答案,希望这能解决您的问题。谢谢,它确实有效,但结果与我的代码相同,它仅在选择第二个id时起作用。。。if(isset($\u POST['bulking'])只返回true,ID为26。。来自其他两个$u POSt变量的类别的第二个id返回false,无论是否选中;/再次感谢,这段代码比我的更可读,也更短@TsvetomirovYordan这里有两件事。1.根据您的代码,一旦此
if
条件
if(isset($\u POST[$value])){
满足条件后,它将立即返回
true
,从而终止
,而
本身在那里循环,因此一旦满足条件,它将不会循环通过结果集的其余部分。2.检查是否使用
$\u POST
获得所有预期内容,执行
var\u dump($\u POST)
@TsvetomirovYordan粘贴
var\u dump($\u POST);
的内容,并在这里给我它的链接。这可能会清除整个场景。@TsvetomirovYordan
var\u dump(…);
不显示离散数组,因此这不是
var\u dump($\u POST);
的有效输出。您编辑了
var\u dump($\u POST)的内容吗
在粘贴到pastebin之前?如果是这样,则不要编辑任何内容,只需粘贴
var\u dump($\u POST)的精确输出
在pastebin.com上,并给我这里的链接。@TsvetomirovYordan我想我理解了这个问题。如果你能看看数据库值和
$\u POST
值,你会发现
脂肪损失
存储在名称列中,但是
$\u POST
脂肪损失
值,请看下面的下划线。这就是为什么它不是ge的原因tting匹配正确,因为
Fat Loss!=Fat\u Loss
。我建议您在提交表单时发送任何其他列值(名称除外),以便以后无法更改。