首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在while循环中内爆ids,并在

在while循环中内爆ids,并在
EN

Stack Overflow用户
提问于 2016-09-29 07:53:38
回答 3查看 3.8K关注 0票数 1

我试图显示一些子内容,所以我需要得到他们父母的孩子的身份证。

我就是这么做的:

代码语言:javascript
复制
$ids        = "SELECT * FROM `web_categories` WHERE parent_id = 14 AND published = 1";
$idscon     = $conn->query($ids);
while ($ids = $idscon->fetch_array()){
    $idss .= $ids['id'];
}

$project1       = "SELECT * FROM `web_content` WHERE catid in ('$idss') AND state = 1";
$projectcon1    = $conn->query($project1);
$projectcr1     = array();
while ($projectcr1[] = $projectcon1->fetch_array());

我试着像这样对$idss进行内爆:

代码语言:javascript
复制
$implode = implode(',', $idss);

但这给了我Invalid arguments passed。我做错了什么?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-09-29 07:56:33

您在first循环中做错了.

给你,$idss .= $ids['id'];,你做错了。将值以字符串形式存储在变量中,但当您尝试将其内爆时.它抛出一个错误!使implode()用于将数组设置为字符串。因此,遵循以下步骤。

$idss .= $ids['id'];更改为$idss[] = $ids['id'];,而不是implode(),使用join()

创建一个数组名$idss,并将ids推送或插入到该数组中。然后内爆/加入ID。

代码语言:javascript
复制
$idss = array();
while ($ids = $idscon->fetch_array()){
    $idss[] = $ids['id'];
}
$implode = implode(',', $idss);

现在,您可以在下一个查询中使用这个$implode变量。

票数 4
EN

Stack Overflow用户

发布于 2016-09-29 07:55:49

您只需将所有ID存储在一个数组中,类似于第一个while循环中的$yourIDs[] = $ids['id'];

对于$idss .= $ids['id'];,您不能使用implode(),因为这个操作的结果应该是"1234“,没有任何逗号。

你只需要用这样的方法:

代码语言:javascript
复制
<?php
$yourIDs = array();
while ($ids = $idscon->fetch_array()){
    $yourIDs[] = $ids['id']; // this will save all IDs into $yourIDs array.
}
$idss = implode(',',$yourIDs); // result of this should be 1,2,3,4 etc.
?>
票数 3
EN

Stack Overflow用户

发布于 2016-09-29 08:05:49

我认为您很可能在一个查询中做到这一点。

代码语言:javascript
复制
SELECT * FROM `web_content` WHERE `catid` in (
    SELECT `id` FROM `web_categories` WHERE `parent_id` = 14 AND `published` = 1
) AND `state` = 1

实际上,最初的代码确实是这样做的,但分两个阶段--子查询有时会很慢,但它确实取决于db的大小和预期结果的数量。的确,联接可以而且通常比依赖子查询更高效,因此这也许是另一个需要探索的选项。当mysql执行从外部到内部的查询计划而不是直观的内部到外部的子查询时,会导致服务器爬行--这实际上取决于子查询的复杂性和必须处理的数据量。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39764454

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档