PHP函数无序输出数据

PHP函数无序输出数据,php,function,Php,Function,我编写了一个函数,用于查询数据库,以了解使用会话中的用户ID登录的特定用户角色。但是当我去测试它的时候。它输出正确的数据,但不在正确的位置。例如,当我与一个用户名为“Fred12”的用户登录时,它会显示“您好,您的角色在上面,它在一个长字符串中包含用户角色。见附件截图。角色应与其他所有角色位于同一行。下面我包括了我的函数和出现问题文本的页面的代码。我已经用同样的代码发布了其他问题,正如我在讨论这一点之前遇到的一些其他问题一样 功能 function getRoleName($conn, $id)

我编写了一个函数,用于查询数据库,以了解使用会话中的用户ID登录的特定用户角色。但是当我去测试它的时候。它输出正确的数据,但不在正确的位置。例如,当我与一个用户名为“Fred12”的用户登录时,它会显示“您好,您的角色在上面,它在一个长字符串中包含用户角色。见附件截图。角色应与其他所有角色位于同一行。下面我包括了我的函数和出现问题文本的页面的代码。我已经用同样的代码发布了其他问题,正如我在讨论这一点之前遇到的一些其他问题一样

功能

function getRoleName($conn, $id)
{
        $id = $_SESSION['userid'];
        $sql = "SELECT 
                * FROM users
                INNER JOIN user_roles ON users.usersId = user_roles.user_id
                INNER JOIN roles ON user_roles.role_id = roles.role_id 
                WHERE users.usersId = ?;";
        $stmt = $conn->prepare($sql);
        //$stmt -> mysqli_stmt_prepare($stmt, $sql);
        $stmt -> bind_param("s", $_SESSION['userid']);
        $stmt -> execute();
        $result = $stmt->get_result();
        if($result->num_rows > 0){

            while ($row = $result->fetch_assoc()){
                if ($row['role_name'] == 0) {
                $array = array($row['role_name']);
                foreach ($array as $value) {
                        echo ($value);
                }
                }else{
                echo "no role!";
                }//end else
            }//end while
        }else{
        echo "JPS Says go away from me!";
        }//end if numrows   
索引

<?php 
include_once 'header.php';
include_once 'includes/dbh.inc.php';

?>
<?php  
if (isset($_SESSION["useruid"])) 
{
    echo "<p>Hello there " . $_SESSION["useruid"]. "&nbsp;your roles are &nbsp;" . getRoleName($conn, $_SESSION["userid"])."</p>";

}//end isset
    
                ?>
<?php 
include_once 'footer.php';
?>

当您这样做时

 echo "<p>Hello there " . $_SESSION["useruid"]. "&nbsp;your roles are &nbsp;" . getRoleName($conn, $_SESSION["userid"])."</p>";
$tmp = "<p>Hello there " . $_SESSION["useruid"]. "&nbsp;your roles are &nbsp;" . getRoleName($conn, $_SESSION["userid"])."</p>";
echo $tmp;
function getRoleName($conn, $id)
{
    $roles = [];
    $id = $_SESSION['userid'];
    $sql = "SELECT 
            * FROM users
            INNER JOIN user_roles ON users.usersId = user_roles.user_id
            INNER JOIN roles ON user_roles.role_id = roles.role_id 
            WHERE users.usersId = ?;";
    $stmt = $conn->prepare($sql);
    //$stmt -> mysqli_stmt_prepare($stmt, $sql);
    $stmt -> bind_param("s", $_SESSION['userid']);
    $stmt -> execute();
    $result = $stmt->get_result();
    if($result->num_rows > 0){
        while ($row = $result->fetch_assoc()){
            if ($row['role_name'] == 0) {
            $array = array($row['role_name']);
            foreach ($array as $value) {
                $roles[] = $value
            }
            }else{
                $roles[] = "no role!";
            }//end else
        }//end while
    }else{
        throw new Exception('JSP says go away!');
    }//end if numrows
    return $roles;
}

echo "<p>Hello there " . $_SESSION["useruid"]. "&nbsp;your roles are &nbsp;" . implode(",", getRoleName($conn, $_SESSION["userid"]))."</p>";