在Session中存储变量

时间:2016-11-08 10:32:42

标签: php mysql session

我想存储我在$_SESSION中提交表单的用户的mysql数据库中的user_level 我的代码目前是这样的:

    <form id='login' action='<?php echo $fgmembersite->GetSelfScript(); ?>' method='post' accept-charset='UTF-8'>
    <fieldset >
    <?php
    if(isset($_POST['submitted']))
    {
 session_start();
    if($fgmembersite->Login())
       {

        $mysqli = new mysqli('host', 'name', 'psw', 'db');
                if ($result = $mysqli->query("SELECT user_level FROM users WHERE username='$username'")) {

                 $_SESSION['user_level'] = $result;     
            } 
            $fgmembersite->RedirectToURL("loginhome.php");

       }       

    } 
    ?>

    <legend>Login</legend>

    <input type='hidden' name='submitted' id='submitted' value='1'/>

    <div class='short_explanation'>* benötigte Felder</div>

    <div><span class='error'><?php echo $fgmembersite->GetErrorMessage(); ?></span></div>
    <div class='container'>
        <label for='username' >Benutzername*:</label><br/>
        <input type='text' name='username' id='username' value='<?php echo $fgmembersite->SafeDisplay('username') ?>' maxlength="50" /><br/>
        <span id='login_username_errorloc' class='error'></span>
    </div>

现在我在网站上进行了检查,在那里您使用print_r($_SESSION);进行了重定向,我得到了这样的结果:

[user_level] => mysqli_result Object ( [current_field] => [field_count] => [lengths] => [num_rows] => [type] => )

有谁可以向我解释那里发生了什么?或者出了什么问题?

2 个答案:

答案 0 :(得分:1)

这可能无法解决您的问题,但应始终在脚本的最顶层开始会话。

<?php
if (!isset($_SESSION)) {
    session_start();
}

// ... Other code ...

您的查询也存在问题。您应该像以下一样使用它:

$conn = new mysqli('host', 'username', 'password', 'database');
$stmt = $conn->prepare("SELECT * FROM table WHERE id = ?");
$stmt->bind_param("s", $editID);
$stmt->execute();
$result = $stmt->get_result();
$row = $result->fetch_assoc();

print_r($row);

答案 1 :(得分:0)

试试这个

1)在页面顶部开始session

2)您应该在associative array中获取数据,然后在session variable中分配值

 if ($result->num_rows > 0) {
    $row = $result->fetch_assoc();
    $_SESSION['user_level'] =  $row['user_level'];
    }