使用 foreach 循环的简单查询不起作用,但不起作用

Posted

技术标签:

【中文标题】使用 foreach 循环的简单查询不起作用,但不起作用【英文标题】:Simple query with foreach loop does not work, but without works 【发布时间】:2017-04-04 20:26:26 【问题描述】:

我遇到了一个毫无意义的查询问题。

public function getGroup()

    if(2 > 0)
        $query = "SELECT * FROM products ";
        $array = array(1);
        foreach($array as $n)
            $query .= " AND ID '$n'";
        
        return $query;
     else
        $query = "SELECT * FROM products WHERE ID = 1 ";
        return $query;
    

【问题讨论】:

你的代码没有意义,我们需要一些上下文。 (1) 这应该是什么:“AND ID '$n'”? (2) 创建查询后将其打印出来似乎是查看问题的一种明显方式。 您的查询将类似于SELECT * FROM products AND ID <someId>,这是不正确的。您缺少 WHERE 子句。至少这是我从上面的代码中可以理解的。 $query .= " AND ID '$n'"; 删除 AND 而不是 AND 使用 WHERE。 $query .= " Where ID '$n'"; 那些错别字会让你每次都犯错。 不要对您的原始问题进行修改,因为这可能会使好的答案无效。 【参考方案1】:

您的 if 语句中没有 WHERE。因此,您的查询将如下所示:SELECT * FROM products AND ID '$n'.... 还要注意 ID 之后没有 =

    public function getGroup()

        if(2 > 0)
            $query = "SELECT * FROM products WHERE";
            $array = array(1);
            $i=0;
            foreach($array as $n)
                if($i==0) 
                    $query .= " ID = '$n'";
                
                else 
                    $query .= " AND ID = '$n'";
                
                $i++;
            
            return $query;
         else
            $query = "SELECT * FROM products WHERE ID = 1 ";
            return $query;
        
    

【讨论】:

你很接近,但仍然不正确。现在 OPs 查询看起来像SELECT * FROM products WHERE AND ID = <someID>。为foreach 循环的第一次迭代设置一个条件,不添加AND 部分。 仍然不正确$nforeach之前不存在。 刚才看到了。可能会起作用,因为我现在有了答案,虽然不是 100% 确定 $i 将始终为 0,因为您没有增加值。 现在看起来好多了?【参考方案2】:

我想你想要这样

public function getGroup()
    if(2 > 0)
        $array = array(1);
        $query = "SELECT * FROM products WHERE ID in ('$array')";           
        return $query;
     else
        $query = "SELECT * FROM products WHERE ID = 1 ";
        return $query;
    

【讨论】:

你“认为”为什么? 好的答案将始终解释所做的事情以及为什么以这种方式完成,不仅是为了 OP,也是为了 SO 的未来访问者。跨度> 我认为s78想要根据ids数组记录 如果您认为这是您的答案的一部分。 这不是你的回答是不正确的 答案可能是正确的,只是没有解释做了什么以及为什么这样做。

以上是关于使用 foreach 循环的简单查询不起作用,但不起作用的主要内容,如果未能解决你的问题,请参考以下文章

forEach循环内的XMLHTTPRequest不起作用

Jquery Bootstrap Dropdown 在使用 PHP 中的 foreach 循环填充的表中不起作用

TabView 选择在 SwiftUi Playground 中不起作用

DataGridView 上的 Foreach 循环中的其他条件不起作用

PHP - 数组未设置在foreach循环中不起作用

PHP - Wordpress - 插件小部件更新功能 - 更新数组值 [Foreach 循环不起作用]