一会儿进去

时间:2018-07-29 09:10:46

标签: php

我已经从数据库中提取了我拥有的所有域,我想对所有添加到数据库中的域进行注释。

$results = $mysqli->query("SELECT domain_name, id_view FROM domain GROUP BY domain_name ORDER BY domain_name");
$comment = $mysqli->query("SELECT domain_name, id_view, comment FROM domain_comment");
$id_array = array();
while($row = mysqli_fetch_array($comment)) {
    $id_array[] = $row['comment'];
    $id_array[] = $row['id_view'];
}

while($row = mysqli_fetch_array($results))
{

    $section = $row['id_view'];
          foreach ($id_array as $sectionname) {
            if ($sectionname == $section) {
                echo $sectionname;
            }
          }
}

它收到的数据是VIEW ID,而不是Comment,我在做什么错了?

编辑: 当他给出Select查询时:

$comment = $mysqli->query("SELECT comment FROM domain_comment INNER JOIN domain ON domain_comment.id_view = domain.id_view");

while($ row = mysqli_fetch_array($ results)) {

while($row2 = mysqli_fetch_array($comment))
        {
          echo $row2['comment'];
        }

}

它将在第一个域中打印所有评论。

我得到的结果是: The result I have

他想要的结果: The result he wants

2 个答案:

答案 0 :(得分:0)

这部分

 $id_array[] = $row['comment'];
$id_array[] = $row['id_view'];

您想做什么?

在id数组中插入注释?在这种情况下,id_array将具有一个注释和一个id,我不认为这是您想要的。第二个循环肯定是我们$ row2,它更安全,不会混淆。内部加入最快的方式。我想你已经在那里了。

尝试删除该行

 $id_array[] = $row['comment'];

然后检查。

对于innerjoin,您可以尝试在两个键(也就是域)上进行内部联接。

    $comment = $mysqli->query("SELECT comment FROM domain_comment INNER JOIN domain ON domain_comment.id_view = domain.id_view and domain_comment.domain_name = domain.domain_name");

答案 1 :(得分:0)

while($row = mysqli_fetch_array($comment)) {
    $id_array[$row['id_view']]['comments'][] = $row['comment'];
}

while($row = mysqli_fetch_array($results))
{
    $id_array[$row['id_view']]['data'] = $row;
}

在转储$id_array之后,您可以尝试此解决方案,在这种情况下,处理数据要容易得多。