繁体   English   中英

使用php中的ID根据查询输出输出不同的表

[英]Outputting a different table based on a query output using an ID in php

我正在尝试根据结果 ID 使用 PHP 和 MSSQL 在 PPH 中的每个“结果”下输出结果。 我已经在网上搜索并尽力输出结果,但当前代码显示整个记录后的结果。

这将从表中选择所有人员并循环遍历他们,然后输出与下一个人之前的人下的人相关的每种颜色

目前,代码在列出所有人员后输出颜色。

<?php
$tsql = "SELECT * from dbo.dim_person";

$getResults_sbu_l = sqlsrv_query($conn_d, $tsql);

while ($person = sqlsrv_fetch_array($getResults_sbu_l,SQLSRV_FETCH_ASSOC)) 
{
    $arraySbu[$person['Person_id']] = $person;
}

$tsql_acc = "SELECT * from dbo.dim_color";

$getResults_sbu_acc = sqlsrv_query($conn_d, $tsql_acc);

while ($color = sqlsrv_fetch_array($getResults_sbu_acc,SQLSRV_FETCH_ASSOC)) 
{
    $arraySbu[$color['Person_id']]['color_id'][] = $color;
}

foreach($arraySbu AS $person)
{
    echo  $person['person_name'] . "<br>";

    foreach($person['color_id'] AS $color)
    {
        echo $color['color_name'] . "<br>";
    }
}
?>

如果我正确理解了这个问题,下一个方法可能会有所帮助。 不必执行两个单独的语句,将数据存储在数组中并使用循环输出存储在该数组中的数据。 您可以尝试使用适当的JOINORDER BY执行单个语句。

<?php
// Statement. 
// Use LEFT (RIGHT) join if you want to include (exclude) persons without colors.
$tsql = "
    SELECT p.person_name, c.color_name 
    FROM  dbo.dim_person p
    LEFT JOIN dbo.dim_color c ON p.person_id = c.person_id 
    ORDER BY p.person_name, c.color_name
";
$result = sqlsrv_query($conn_d, $tsql);
if ($result === false ) {
    echo "Error (sqlsrv_query): ".print_r(sqlsrv_errors(), true);
    exit;
}

// Results
$person = '';
while ($row = sqlsrv_fetch_array($result, SQLSRV_FETCH_ASSOC)) {
    if ($person != $row['person_name']) {
        $person = $row['person_name'];
        echo $row['person_name']."<br>";
    }
    echo $row['color_name']."<br>";
}

// End
sqlsrv_free_stmt($result);
sqlsrv_close($conn_d);
?>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM