首页 > 解决方案 > PHP函数在应该返回多行时只返回一行

问题描述

我写了一个 PHP 函数来显示一个人登录我的网站时的角色名称。但是,当用户具有多个角色时,它只返回一行而不是所有角色。任何帮助,将不胜感激。

getRoleName 函数

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                       
}

index.php 文件是显示角色以供用户查看的位置。

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

?>
<?php  
if (isset($_SESSION["useruid"])) 
{
    echo "<p>Hello there " . $_SESSION["useruid"]. "</p>";
    echo "Your roles are ".getRoleName($conn, $_SESSION["userid"]);
}//end isset
    
                ?>
<?php 
include_once 'footer.php';
?>

标签: phpmysqli

解决方案


推荐阅读