使用 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
部分。
仍然不正确$n
在foreach
之前不存在。
刚才看到了。可能会起作用,因为我现在有了答案,虽然不是 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 循环的简单查询不起作用,但不起作用的主要内容,如果未能解决你的问题,请参考以下文章
Jquery Bootstrap Dropdown 在使用 PHP 中的 foreach 循环填充的表中不起作用
TabView 选择在 SwiftUi Playground 中不起作用