Php 如何检查是否所有$\u POST变量都是用foreach循环设置的
我想检查是否设置了给定的$\u post变量,然后执行一个查询(这是另一个主题)。但我有一个很大的麻烦,5个小时我真的无法通过它。。这是我的功能代码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
<?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);
的内容,并在这里给我它的链接。这可能会清除整个场景。@TsvetomirovYordanvar\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
。我建议您在提交表单时发送任何其他列值(名称除外),以便以后无法更改。